Just as a small addition, to confirm what I said earlier concerning situation with additional threads.
After adding 2 threads that don't actually call mono (simply register them with mono_thread_attach(mono_get_root_domain())), I end up having: "Waiting for 2(4) threads to suspend..." which mean 1 of the fully native threads is also blocking it. Maybe it can't detect well when threads are running in native mode? I will continue to investigate as well. On Wed, Jan 26, 2011 at 12:58 AM, Virgile Bello <virgile.be...@gmail.com>wrote: > I am having trouble with mono soft debugger. > - I embed Mono runtime in my program, and I got MonoDevelop to act as > SoftDebugger client > - Mono soft debugger is loading properly (first breakpoint usually works -- > if already set beforehand -- I can see callstacks, etc...) > - As soon as I press F5 -- to execute until this breakpoint is reached > again next iteration -- or if I disable/reenable this breakpoint, program > hang (see log) > - Main loop is in C and Mono functions are called regularly. > > I traced down the problem to thread(s) not suspending (cf log). > Usually, it seems it is the Finalizer thread (in this case 00002054) that > doesn't get suspended. > > In mono sources, I tried to call mono_gc_collect/mono_gc_invoke_finalizers > in the suspend_thread loop. In that case, I can manage to have F5 working > (breakpoint trigger every step inside the loop). > However it doesn't work as soon as I do anything else (such as removing & > adding again the breakpoint). > > I remember seeing this problem on more than 1 thread when I had other > threads active (i.e. Waiting for 3(4) threads to suspend...) > > Does anyone have an idea? Maybe there is something special to do if Mono > doesn't keep hand (often back to full unmanaged world since main loop is in > C) > > Debugger log: > [00000410] Thread started, obj=04702F20, tls=004CDA60. > [00000410] Suspended. > [00000410] Resumed. > [00000410] Suspending vm... > [00000410] Sent event VM_START, suspend=2. > [00000410] Suspended. > [dbg] Agent thread started, pid=00001260 > [00002054] Thread started, obj=04702E70, tls=004EC1D8. < Finalizer thread > [00002054] Suspended. > [dbg] Received command VM(VERSION), id=1. > [dbg] Received command VM(SET_PROTOCOL_VERSION), id=2. > [dbg] Protocol version 2.2, client protocol version 2.2. > [dbg] Received command APPDOMAIN(1), id=3. > ............... > [00000410] Suspended. > [dbg] Received command TYPE(1), id=1785. > [dbg] Received command TYPE(6), id=1786. > [00002054] Received single step event for suspending. > [00002054] Suspended. > [dbg] Received command VM(RESUME), id=1787. > [00001260] Resuming vm... > [00002054] Resumed. > [00000410] Resumed. > [00000410] Suspending vm... > [00000410] Interrupting 00002054... > [00000410] Sent event TYPE_LOAD, suspend=2. > [00000410] Suspended. > [dbg] Received command TYPE(1), id=1788. > [dbg] Received command TYPE(6), id=1789. > [00002054] Received single step event for suspending. > [00002054] Suspended. > [dbg] Received command VM(RESUME), id=1790. > [00001260] Resuming vm... > [00002054] Resumed. > [00000410] Resumed. > [00000410] Suspending vm... > [00000410] Interrupting 00002054... > [00000410] Sent event TYPE_LOAD, suspend=2. > [00000410] Suspended. > [dbg] Received command TYPE(1), id=1791. > [dbg] Received command TYPE(6), id=1792. > [dbg] Received command VM(RESUME), id=1793. > [00002054] Received single step event for suspending. > [00002054] Suspended. > [00001260] Resuming vm... > [00000410] Resumed. > [00002054] Resumed. > [00000410] Suspending vm... > [00000410] Interrupting 00002054... > [00000410] Sent event TYPE_LOAD, suspend=2. > [00000410] Suspended. > [dbg] Received command TYPE(1), id=1794. > [dbg] Received command TYPE(6), id=1795. > [dbg] Received command VM(RESUME), id=1796. > [00001260] Resuming vm... > [00000410] Resumed. > [00000410] Breakpoint hit, method=Step, offset=0x1e. > [00000410] Suspending vm... > [00000410] Interrupting 00002054... > [00000410] Sent event BREAKPOINT, suspend=2. > [00000410] Suspended. > [dbg] Received command VM(ALL_THREADS), id=1797. > [dbg] Received command THREAD(1), id=1798. > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > Waiting for 1(2) threads to suspend... > > >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list