[Gems-users] Possible Deadlock detected


Date: Sat, 5 Aug 2006 13:06:56 +0300
From: "Shachar Gang" <shacharg@xxxxxxxxxxxxx>
Subject: [Gems-users] Possible Deadlock detected
Hi,

I am running a modified MOSI_SMP_bcast_1level version of ruby and got the
"Possible Deadlock detected" error.

When looking at the debug trace I saw that for the first 1000 time units I
sometimes get the following:
Debug: in fn virtual void Throttle::wakeup() in network/simple/Throttle.C:256:
[Throttle: 42 1 bw: 10000]
Debug: in fn virtual void Throttle::wakeup() in network/simple/Throttle.C:257:
not scheduled again
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 138
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 139
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 140
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 141
...
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 170
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 171
Debug: in fn void EventQueue::triggerEvents(Time) in
eventqueue/EventQueue.C:119: *(thisNode.m_consumer_ptr) is [PerfectSwitch 52]

(Where the hree dots are all the time units between 141-170)

And after a while I got the following:

Debug: in fn void L1Cache_Controller::j_popDataQueue(const Address&) in
generated/MOSI_SMP_STM_bcast_1level/L1Cache_Controller.C:203: executing
Debug: in fn void MessageBuffer::pop() in buffers/MessageBuffer.C:339: pop
from [Chip 6 0, L1Cache, dataNetwork_in]
Debug: in fn TransitionResult L1Cache_Controller::doTransition(L1Cache_Event,
L1Cache_State, const Address&) in generated/MOSI_SMP_STM_bcast_1level/L1Cache
_Transitions.C:32: next_state is TC

Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&) const [with
ENTRY = L1Cache_Entry] in system/CacheMemory.h:366: address is [0x18c6b80, l
ine 0x18c6b80]
Debug: in fn bool CacheMemory<ENTRY>::isTagPresent(const Address&) const [with
ENTRY = L1Cache_Entry] in system/CacheMemory.h:367: found
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 1127
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 1128
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 1129
...
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 499999
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 500000
Debug: in fn void runRubyEventQueue(conf_object_t*, lang_void*) in
simics/interface.C:92: time is 500001
Debug: in fn void EventQueue::triggerEvents(Time) in
eventqueue/EventQueue.C:119: *(thisNode.m_consumer_ptr) is [Sequencer: 10,
outstanding requests: 1, re
ad request table: [ [0x18ab580, line 0x18ab580]=[CacheMsg: Address=[0x18ab5a0,
line 0x18ab580] Type=LD ProgramCounter=[0x10047198, line 0x10047180] AccessM
ode=SupervisorMode Size=8 Prefetch=No Version=0 Aborted=0 Time=1 ] ], write
request table: [ ]]
Debug: in fn void EventQueue::triggerEvents(Time) in
eventqueue/EventQueue.C:120: thisNode.m_time is 500001
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=[0x18ab5a0, line 0x18ab580] Type=LD ProgramCounter
=[0x10047198, line 0x10047180] AccessMode=SupervisorMode Size=8 Prefetch=No
Version=0 Aborted=0 Time=1 ]
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:105:
m_chip_ptr->getID() is 10
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:108:
current_time is 500001
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:109:
request.getTime() is 1
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:110:
current_time - request.getTime() is 500000
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:111:
*m_readRequestTable_ptr is [ [0x18ab580, line 0x18ab580]=[CacheMsg: Address=[0x1
8ab5a0, line 0x18ab580] Type=LD ProgramCounter=[0x10047198, line 0x10047180]
AccessMode=SupervisorMode Size=8 Prefetch=No Version=0 Aborted=0 Time=1 ] ]
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:112: i is 0
Warning: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:113:
keys.size() is 1
Fatal Error: in fn virtual void Sequencer::wakeup() in system/Sequencer.C:114:
Aborting

Can anyone help me what can make simulator wait for that long?

Thanks,
Shachar Gang


[← Prev in Thread] Current Thread [Next in Thread→]