Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-debug-dev] CRegister deadlock

Hi Mikhail, 
I am implementing CDT debugger and I stumbled on a deadlock. 
The deadlock happens when I open the register view and step few times. 

The deadlock happens when the GUI update thread calls 
synchronized CRegister.InternalVariable.getValue() 
that calls my debugger implementation of 
ICDIRegister.getValue(ICDIStackFrame context).

At that very moment my target fires 
ResumeEvent and during that event 
synchronized CRegister.InternalVariable.setChanged
tries to enter the method but cannot. The other thread has already
acquired the lock on the CRegister.InternalVariable object. 

If I remove one of the two synchronized in front of one of the methods I
don't have the deadlock anymore. Of course that is not a fix.

Can you confirm that this is a valid use case and the problem should be
fixed on the CDT side? I suppose there is no restriction on the debugger
implementation not to fire events during any API calls. 
If so, I'll file a bug. 

Regards
Dobrin


Back to the top