Debugger bugs.

Frank Schruefer Frank.Schruefer at t-online.de
Fri Jan 16 14:22:22 CST 2004


Hy,

I've stumbled over problems trying to debug RtlCreateUserThread.
The error I get depends on how I'm stepping through the code but
seems to be caused by the syscall __NR_rt_sigprocmask
(int 0x80 with eax=175).
The thread for which procmask should get set is created by TIME_MMTimeStart
in winmm/time.c;

Unfortunately I've no idea whether that's "normal" or how to fix ...
If you want me to provide more info just tell me what you need to
know.

I got three versions (common trace of all three versions see below):

========= FIRST VERSION: Stepping over 'sigprocmask( SIG_BLOCK, &block_set, &old_set );' =============
...
(COMMON TRACE)
...
Wine-dbg>
241         struct __server_request_info * const req = req_ptr;
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
err:seh:setup_exception stack overflow 192 bytes in thread 000b eip 4023035b esp 405e0f40 stack 0x405e0000-0x406e0000
Invalid address for breakpoint 0, disabling it
Invalid address for breakpoint 1, disabling it
Invalid address for breakpoint 2, disabling it
Invalid address for breakpoint 3, disabling it
Process of pid=0000000a has terminated
Wine-dbg>
======================================================================================================

========= SECOND VERSION: Stepping over 'int 0x80' with eax=0xAF (=175) ==============================
...
(COMMON TRACE)
...
Wine-dbg>
241         struct __server_request_info * const req = req_ptr;
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>si
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc81 (wine_server_call+0x22 [server.c:244] in NTDLL.DLL): pushl   %eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc82 (wine_server_call+0x23 [server.c:244] in NTDLL.DLL): leal    0x5884(%ebx),%eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc88 (wine_server_call+0x29 [server.c:244] in NTDLL.DLL): pushl   %eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc89 (wine_server_call+0x2a [server.c:244] in NTDLL.DLL): pushl   $0x0
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc8b (wine_server_call+0x2c [server.c:244] in NTDLL.DLL): call    0x40211788 (_init+0x46c in ntdll.dll.so)
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
0x40211788 (_init+0x46c in ntdll.dll.so): jmp   *0x11c(%ebx)
Wine-dbg>
0x400cdb10 (NTDLL.DLL.toupper+0x64a0 in libc.so.6): pushl       %ebp
Wine-dbg>
0x400cdb11 (NTDLL.DLL.toupper+0x64a1 in libc.so.6): movl        %esp,%ebp
Wine-dbg>
0x400cdb13 (NTDLL.DLL.toupper+0x64a3 in libc.so.6): subl        $8,%esp
Wine-dbg>
0x400cdb16 (NTDLL.DLL.toupper+0x64a6 in libc.so.6): movl        %esi,0x0(%esp)
Wine-dbg>
0x400cdb19 (NTDLL.DLL.toupper+0x64a9 in libc.so.6): movl        $0x8,%esi
Wine-dbg>
0x400cdb1e (NTDLL.DLL.toupper+0x64ae in libc.so.6): movl        %edi,0x4(%esp)
Wine-dbg>
0x400cdb22 (NTDLL.DLL.toupper+0x64b2 in libc.so.6): movl        0x8(%ebp),%edi
Wine-dbg>
0x400cdb25 (NTDLL.DLL.toupper+0x64b5 in libc.so.6): movl        0xc(%ebp),%ecx
Wine-dbg>
0x400cdb28 (NTDLL.DLL.toupper+0x64b8 in libc.so.6): movl        0x10(%ebp),%edx
Wine-dbg>
0x400cdb2b (NTDLL.DLL.toupper+0x64bb in libc.so.6): xchgl       %ebx,%edi
Wine-dbg>
0x400cdb2d (NTDLL.DLL.toupper+0x64bd in libc.so.6): movl        $0xaf,%eax
Wine-dbg>
0x400cdb32 (NTDLL.DLL.toupper+0x64c2 in libc.so.6): int $0x80
Wine-dbg>
fixme:seh:UnhandledExceptionFilter Unhandled error on debug event: 0
0x400cdb36 (NTDLL.DLL.toupper+0x64c6 in libc.so.6): cmpl        $-4096,%eax
Wine-dbg>
======================================================================================================

========= THIRD VERSION: Stepping into 'int 0x80' with eax=0xAF (=175) ===============================
...
(COMMON TRACE)
...
Wine-dbg>
241         struct __server_request_info * const req = req_ptr;
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>si
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc81 (wine_server_call+0x22 [server.c:244] in NTDLL.DLL): pushl   %eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc82 (wine_server_call+0x23 [server.c:244] in NTDLL.DLL): leal    0x5884(%ebx),%eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc88 (wine_server_call+0x29 [server.c:244] in NTDLL.DLL): pushl   %eax
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc89 (wine_server_call+0x2a [server.c:244] in NTDLL.DLL): pushl   $0x0
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
0x4024cc8b (wine_server_call+0x2c [server.c:244] in NTDLL.DLL): call    0x40211788 (_init+0x46c in ntdll.dll.so)
244         sigprocmask( SIG_BLOCK, &block_set, &old_set );
Wine-dbg>
0x40211788 (_init+0x46c in ntdll.dll.so): jmp   *0x11c(%ebx)
Wine-dbg>
0x400cdb10 (NTDLL.DLL.toupper+0x64a0 in libc.so.6): pushl       %ebp
Wine-dbg>
0x400cdb11 (NTDLL.DLL.toupper+0x64a1 in libc.so.6): movl        %esp,%ebp
Wine-dbg>
0x400cdb13 (NTDLL.DLL.toupper+0x64a3 in libc.so.6): subl        $8,%esp
Wine-dbg>
0x400cdb16 (NTDLL.DLL.toupper+0x64a6 in libc.so.6): movl        %esi,0x0(%esp)
Wine-dbg>
0x400cdb19 (NTDLL.DLL.toupper+0x64a9 in libc.so.6): movl        $0x8,%esi
Wine-dbg>
0x400cdb1e (NTDLL.DLL.toupper+0x64ae in libc.so.6): movl        %edi,0x4(%esp)
Wine-dbg>
0x400cdb22 (NTDLL.DLL.toupper+0x64b2 in libc.so.6): movl        0x8(%ebp),%edi
Wine-dbg>
0x400cdb25 (NTDLL.DLL.toupper+0x64b5 in libc.so.6): movl        0xc(%ebp),%ecx
Wine-dbg>
0x400cdb28 (NTDLL.DLL.toupper+0x64b8 in libc.so.6): movl        0x10(%ebp),%edx
Wine-dbg>
0x400cdb2b (NTDLL.DLL.toupper+0x64bb in libc.so.6): xchgl       %ebx,%edi
Wine-dbg>
0x400cdb2d (NTDLL.DLL.toupper+0x64bd in libc.so.6): movl        $0xaf,%eax
Wine-dbg>
0x400cdb32 (NTDLL.DLL.toupper+0x64c2 in libc.so.6): int $0x80
Wine-dbg>ni
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 4024e090 esp 4001bc60 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b880 stack 0x405e0000-0x406e0000
err:seh:setup_exception nested exception on signal stack in thread 000f eip 400cdb35 esp 4001b4b4 stack 0x405e0000-0x406e0000
...
INFINITE LOOP, PATTERN NOW REPEATING UNTIL 'killall -9 wine-pthread'
...
======================================================================================================


============================================ COMMON TRACE ============================================
merlin at Merlin:/my/hom/merlin/.wine/fake_windows/Program Files/Bullfrog/Keeper> winedbg KEEPER95.EXE
fixme:console:SetConsoleCtrlHandler (0x40615b43,1) - no error checking or testing yet
WineDbg starting on pid e
Breakpoint 1 at 0x004f1ed0
Unable to add breakpoint, will check again any time a new DLL is loaded
Loaded debug information from ELF '/usr/local/bin/wine-pthread' ((nil))
Breakpoint 2 at 0x4000dd60 (_end+0x2fef9d60)
Loaded debug information from ELF '/usr/local/lib/libwine.so.1' (0x4003a000)
No debug information in ELF '/lib/i686/libpthread.so.0' (0x40053000)
No debug information in ELF '/lib/i686/libc.so.6' (0x400a4000)
No debug information in ELF '/lib/libdl.so.2' (0x401d7000)
No debug information in ELF '/lib/i686/libm.so.6' (0x401da000)
No debug information in ELF '/lib/ld-linux.so.2' (0x40000000)
Loaded debug information from ELF '/usr/local/lib/wine/ntdll.dll.so' (0x401fe000)
Loaded debug information from ELF '/usr/local/lib/libwine_unicode.so.1' (0x40274000)
Loaded debug information from ELF '/usr/local/lib/wine/kernel32.dll.so' (0x40480000)
No debug information in 32bit DLL 'C:\Program Files\Bullfrog\Keeper\KEEPER95.EXE' (0x400000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\NTDLL.DLL' (0x40220000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\KERNEL32.DLL' (0x404b0000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\ADVAPI32.DLL' (0x40780000)
Loaded debug information from ELF '/usr/local/lib/wine/gdi32.dll.so' (0x406e0000)
Loaded debug information from ELF '/usr/local/lib/wine/advapi32.dll.so' (0x4076a000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\GDI32.DLL' (0x40700000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\USER32.DLL' (0x407e0000)
Loaded debug information from ELF '/usr/local/lib/wine/winspool.drv.so' (0x4079c000)
Loaded debug information from ELF '/usr/local/lib/wine/user32.dll.so' (0x407c1000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\WINSPOOL.DRV' (0x407b0000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\WINMM.DLL' (0x40920000)
Loaded debug information from ELF '/usr/local/lib/wine/winmm.dll.so' (0x40914000)
No debug information in 32bit DLL 'C:\PROGRAM FILES\BULLFROG\KEEPER\MSS32.DLL' (0x20000000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\RPCRT4.DLL' (0x40a20000)
Loaded debug information from ELF '/usr/local/lib/wine/ole32.dll.so' (0x40988000)
Loaded debug information from ELF '/usr/local/lib/wine/rpcrt4.dll.so' (0x40a04000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\OLE32.DLL' (0x409a0000)
No debug information in 32bit DLL 'C:\PROGRAM FILES\BULLFROG\KEEPER\WSND7R.DLL' (0x10000000)
No debug information in 32bit DLL 'C:\PROGRAM FILES\BULLFROG\KEEPER\SMACKW32.DLL' (0x40a4e000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\DDRAW.DLL' (0x40a90000)
Loaded debug information from ELF '/usr/local/lib/wine/ddraw.dll.so' (0x40a66000)
No debug information in ELF '/usr/X11R6/lib/libSM.so.6' (0x40021000)
No debug information in ELF '/usr/X11R6/lib/libICE.so.6' (0x40b08000)
No debug information in ELF '/usr/X11R6/lib/libXrandr.so.2' (0x4001c000)
No debug information in ELF '/usr/X11R6/lib/libXrender.so.1' (0x40032000)
No debug information in ELF '/usr/X11R6/lib/libXext.so.6' (0x40b1f000)
No debug information in ELF '/usr/X11R6/lib/libX11.so.6' (0x40b2d000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\DPLAYX.DLL' (0x40c40000)
Loaded debug information from ELF '/usr/local/lib/wine/dplayx.dll.so' (0x40c29000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\IPHLPAPI.DLL' (0x40ca0000)
Loaded debug information from ELF '/usr/local/lib/wine/wsock32.dll.so' (0x40ae8000)
Loaded debug information from ELF '/usr/local/lib/wine/ws2_32.dll.so' (0x40c66000)
Loaded debug information from ELF '/usr/local/lib/wine/iphlpapi.dll.so' (0x40c8e000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\WS2_32.DLL' (0x40c70000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\WSOCK32.DLL' (0x40af0000)
No debug information in ELF '/usr/lib/libfreetype.so.6' (0x40ccf000)
No debug information in ELF '/usr/lib/libfontconfig.so.1' (0x40d25000)
No debug information in ELF '/usr/lib/libexpat.so.0' (0x40d4d000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\X11DRV.DLL' (0x40d80000)
Loaded debug information from ELF '/usr/local/lib/wine/x11drv.dll.so' (0x40d6d000)
No debug information in ELF '/usr/lib/tls/libGL.so.1' (0x40df6000)
No debug information in ELF '/usr/lib/tls/libGLcore.so.1' (0x40e53000)
No debug information in ELF '/usr/X11R6/lib/libXcursor.so.1' (0x413a8000)
No debug information in ELF '/usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2' (0x4002a000)
No debug information in ELF '/usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2' (0x40caf000)
No debug information in ELF '/usr/lib/gconv/ISO8859-15.so' (0x405dd000)
No debug information in ELF '/usr/lib/libcups.so.2' (0x41415000)
No debug information in ELF '/usr/lib/libssl.so.0.9.7' (0x41432000)
No debug information in ELF '/usr/lib/libcrypto.so.0.9.7' (0x41462000)
No debug information in ELF '/lib/libnss_files.so.2' (0x41554000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\WINEOSS.DRV' (0x41410000)
Loaded debug information from ELF '/usr/local/lib/wine/wineoss.drv.so' (0x413f5000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\MSACM32.DLL' (0x41460000)
Loaded debug information from ELF '/usr/local/lib/wine/msacm.drv.so' (0x41438000)
Loaded debug information from ELF '/usr/local/lib/wine/msacm32.dll.so' (0x41450000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\MSACM.DRV' (0x41440000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\MIDIMAP.DRV' (0x41480000)
Loaded debug information from ELF '/usr/local/lib/wine/midimap.drv.so' (0x41472000)
In 32-bit mode.
Wine-dbg>c
Stopped on breakpoint 1 at 0x004f1ed0 (KEEPER95.EXE.EntryPoint in KEEPER95.EXE)
Wine-dbg>b RtlCreateUserThread
Many symbols with name 'RtlCreateUserThread', choose the one you want (<cr> to abort):
[1]: 0x40596350 (RtlCreateUserThread in KERNEL32.DLL)
[2]: 0x40252665 (RtlCreateUserThread [thread.c:208] in NTDLL.DLL)
=> 2
Breakpoint 3 at 0x40252665 (RtlCreateUserThread [thread.c:208] in NTDLL.DLL)
Wine-dbg>c
Stopped on breakpoint 3 at 0x40252665 (RtlCreateUserThread [thread.c:208] in NTDLL.DLL)
208     {
Wine-dbg>s
209         struct startup_info *info = NULL;
Wine-dbg>
210         HANDLE handle = 0;
Wine-dbg>
211         TEB *teb = NULL;
Wine-dbg>
212         DWORD tid = 0;
Wine-dbg>
217         if (pipe( request_pipe ) == -1) return STATUS_TOO_MANY_OPENED_FILES;
Wine-dbg>
218         fcntl( request_pipe[1], F_SETFD, 1 ); /* set close on exec flag */
Wine-dbg>
219         wine_server_send_fd( request_pipe[0] );
Wine-dbg>
267         vec.iov_base = (void *)&data;
Wine-dbg>
268         vec.iov_len  = sizeof(data);
Wine-dbg>
270         msghdr.msg_name    = NULL;
Wine-dbg>
271         msghdr.msg_namelen = 0;
Wine-dbg>
272         msghdr.msg_iov     = &vec;
Wine-dbg>
273         msghdr.msg_iovlen  = 1;
Wine-dbg>
279         cmsg.len   = sizeof(cmsg);
Wine-dbg>
280         cmsg.level = SOL_SOCKET;
Wine-dbg>
281         cmsg.type  = SCM_RIGHTS;
Wine-dbg>
282         cmsg.fd    = fd;
Wine-dbg>
283         msghdr.msg_control    = &cmsg;
Wine-dbg>
284         msghdr.msg_controllen = sizeof(cmsg);
Wine-dbg>
285         msghdr.msg_flags      = 0;
Wine-dbg>
288         data.tid = GetCurrentThreadId();
Wine-dbg>
289         data.fd  = fd;
Wine-dbg>
293             if ((ret = sendmsg( fd_socket, &msghdr, 0 )) == sizeof(data)) return;
Wine-dbg>
299     }
Wine-dbg>
221         SERVER_START_REQ( new_thread )
Wine-dbg>
223             req->suspend    = suspended;
Wine-dbg>
224             req->inherit    = 0;  /* FIXME */
Wine-dbg>
225             req->request_fd = request_pipe[0];
Wine-dbg>
226             if (!(status = wine_server_call( req )))
Wine-dbg>
241         struct __server_request_info * const req = req_ptr;
Wine-dbg>

(LAST 3 LINES REPEATED IN ABOVE VERSIONS TO MAKE CLEAR WHERE THEY START)
======================================================================================================

-- 
Frank



More information about the wine-devel mailing list