Hi,
I am trying to run a LogTM program using Simics 3.0.22 and
GEMS 1.3 and the abisko-common target script with Solaris 10. I have tried
both MOESI_SMP_LogTM_directory and MESI_SMP_LogTM_directory. Things work fine
with 1 thread but as soon as I go to 2 threads I get the following warnings
followed by a fatal error:
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:103: Possible Deadlock detected
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:103: Possible Deadlock detected
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:104:
request is [CacheMsg: Address=[0xed2202c, line 0xed22000] Type=LD_XACT
ProgramCounter=[0xff237c74, line 0xff237c40] AccessMode=UserMode Size=2
Prefetch=No Version=0 Aborted=0 Time=34944882 ]
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:104: request is [CacheMsg: Address=[0xed2202c, line
0xed22000] Type=LD_XACT ProgramCounter=[0xff237c74, line 0xff237c40]
AccessMode=UserMode Size=2 Prefetch=No Version=0 Aborted=0 Time=34944882 ]
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:105: m_chip_ptr->getID() is 7
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:105: m_chip_ptr->getID() is 7
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:106: m_version is 0
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:106: m_version is 0
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:107: keys.size() is 1
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:107: keys.size() is 1
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:108: current_time is 34995936
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:108: current_time is 34995936
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:109: request.getTime() is 34944882
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:109: request.getTime() is 34944882
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:110: current_time - request.getTime() is 51054
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:110: current_time - request.getTime() is 51054
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:111: *m_readRequestTable_ptr is [ [0xed22000, line
0xed22000]=[CacheMsg: Address=[0xed2202c, line 0xed22000] Type=LD_XACT
ProgramCounter=[0xff237c74, line 0xff237c40] AccessMode=UserMode Size=2
Prefetch=No Version=0 Aborted=0 Time=34944882 ] ]
Warning: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:111: *m_readRequestTable_ptr is [ [0xed22000, line
0xed22000]=[CacheMsg: Address=[0xed2202c, line 0xed22000] Type=LD_XACT
ProgramCounter=[0xff237c74, line 0xff237c40] AccessMode=UserMode Size=2
Prefetch=No Version=0 Aborted=0 Time=34944882 ] ]
Fatal Error: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:112: Aborting
Fatal Error: in fn virtual void Sequencer::wakeup() in
system/Sequencer.C:112: Aborting
Abort (SIGABRT) in main thread
The simulation state has been corrupted. Simulation cannot
continue.
Please restart Simics.
What can I do to prevent this deadlock from occurring? My
program consists of a main loop with a BEGIN_TRANSACATION(0) followed by a call
to a work function followed by an COMMIT_TRANSACTION(0).
Any advice would be greatly appreciated.
Thanks,
Mark