Eric Pouech wrote:


- kernel send a trap signal
- wine's ntdll catches it, and queue the information as a debug event in the wineserver
- the debugger (msvcmon in your case) get notified of the trap while waiting for a debug event



I understand.

I made a log of what happens when I single step with the debugger:

I see the debugger waking up
001b: *wakeup* signaled=258 cookie=0x2f9ce4
then, a little further it get the exception status
001b: get_exception_status() = 0 {status=65538,context={flags=00010007,...,eflags=00210346,...}}
and then the same thread has a lot of lines in the log with the same message
001b: *signal* signal=5
until the message
001b:warn:seh:setup_exception exception outside of stack limits in thread 001b eip 002b448d esp 019b12ec stack 0x19b0000-0x1ab0000


It clearly looks like a recursive call, or an infinite loop.

Any idea of what can trigger such a behaviour ?

Another question that could be related is the status of the trace flag in EFlags (0x100). It looks like wine clears it in some of its code (raise_trap_exception and the handler for SIGTRAP in signal_i386.c). Shouldn't it be the debugger responsibilty ?

Thanks

David Hemmo

PS: I hope I am clear enough. Don't hesitate to contact me if anything is missing, or not clear.




Reply via email to