[Wine] Re: debugging an app

Henry Gomersall whg21 at cam.ac.uk
Thu May 24 04:38:06 CDT 2007

On Wed, 2007-05-23 at 10:13 -0700, Duane Clark wrote:
> In your ~/.wine/user.reg, there is a registry key:
> [Software\\Wine\\Debug] 1147111116
> "RelayExclude"="ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.97;kernel32.98"
> Try adding kernel32.TlsGetValue etc to it.
Great, this means i can actually grab what is going on (I stopped
without these when the log ate up all my HD space!).

So, the question now is what to do with the error log.

The last few lines before the crash are:
  0009:Ret  ntdll.RtlFreeUnicodeString() retval=7bc4fc60 ret=7b875485
  0009:Call ntdll.RtlFreeUnicodeString(0034dc6c) ret=7b875493
  0009:Ret  ntdll.RtlFreeUnicodeString() retval=7bc4fc60 ret=7b875493
ntdll.NtWaitForMultipleObjects(00000001,0034db50,00000000,00000000,00000000) ret=7b8881c6
  0009:Ret  ntdll.NtWaitForMultipleObjects() retval=00000000
0009:Ret  KERNEL32.UnhandledExceptionFilter() retval=00000000
ntdll.NtQueryVirtualMemory(ffffffff,035b2000,00000000,0034dfc8,0000001c,0034dcec) ret=7b897aa1
0009:Ret  ntdll.NtQueryVirtualMemory() retval=00000000 ret=7b897aa1

Which is nested within the following functions (the last function is the
above functions parent). Lots of other functions on the same level have
been snipped out:

0009:Call user32.SendMessageA(000101b0,00000001,00000000,0034ef9c)
  0009:Call KERNEL32.94(7ea72e60) ret=7ea28200
  0009:Ret  KERNEL32.94() retval=00000009 ret=7ea28200
  0009:Call KERNEL32.94(7ea72e60) ret=7ea28200
  0009:Ret  KERNEL32.94() retval=00000009 ret=7ea28200
  0009:Call window proc 0x7c16e1bd

Similarly, the above block has the following as parent and grandparent:

0009:Call user32.CreateWindowExA(00000000,0017e29c
"Afx:00400000:8:000010DE:00000000:00000000",00000000,56000000,00000000,00000000,00000000,00000000,00020028,00000000,00400000,00000000) ret=7c152206
  0009:Call KERNEL32.GlobalFindAtomA(0017e29c
"Afx:00400000:8:000010DE:00000000:00000000") ret=7ea2ea9c
    0009:Call ntdll.NtFindAtom(0034ebec,00000052,0034edea) ret=7b834d65
    0009:Ret  ntdll.NtFindAtom() retval=00000000 ret=7b834d65
  0009:Ret  KERNEL32.GlobalFindAtomA() retval=0000c049 ret=7ea2ea9c
  0009:Call winex11.drv.CreateWindow(000101b0,0034ef9c,00000000)

> > If I set the windows version to 98, I get as the final few lines:
> Does the program run under Win98? In any case, I wouldn't bother
> trying 
> to run it that way.

It crashes at the same point if I set the windows version to 98.

it seems that the last line:
0009:Ret  ntdll.NtQueryVirtualMemory() retval=00000000 ret=7b897aa1

Is a common function and hence I assume well debugged. Is it obvious
where I should look for the bug?

Any new pointers would be appreciated!


More information about the wine-users mailing list