Why Simics complaints with "Tcf error" when using reverse execution?

98 views Asked by At

I'm working on a hobbyist OS with Simics. I'm running my target on simics-qsp-x86-6.0.67 machine. When I try to use the reverse execution I got an error. These are the steps I performed on Simics console:

    simics>
$disk0_image="/home/peppe/Desktop/g-os-grub2/g-os/img/c.img"
run-command-file /opt/simics/simics-qsp-x86-6.0.67/targets/qsp-x86/qsp-hdd-boot.simics
connect-real-network-bridge
enable-debugger
add-symbol-file /home/peppe/Desktop/g-os-grub2/g-os/kernel.bin

enable-reverse-execution
bp.source_location.break kmain
bp.source_location.break process_0

simics> run

At some point Simics reaches the first and then the second breakpoint:

process_0() at /home/peppe/Desktop/g-os-grub2/g-os/process_0.c:35
35      argv[0] = argv1;

simics> rs 
[tcf error] process_work called while already processing work. This will cause unexpected behavior

If I press CTRL-C:

int_handler_ahci() at /home/peppe/Desktop/g-os-grub2/g-os/drivers/ahci/ahci.c:116
116     EXIT_INT_HANDLER(0,processor_reg)

Line 116 is where rs command should stop, but it happens only if I press CTRL-C. So in order to use reverse execution, I always need to explicitly stop Simics.

My question: is there a way to fix this behavior so Simics stops itself when reaches a breakpoint?

1

There are 1 answers

1
simgron On

While being connected to the real network is unsupported in combination with reverse execution I would want the debugger team to have a look at this. The simics> prompt shows Simics has indeed stopped when you issue rs but what is causing the TCF issue I cannot tell now.