[docs] winedev: Update backtrace and relay examples
André Hentschel
nerv at dawncrow.de
Tue Jul 2 16:39:01 CDT 2013
---
en/winedev-debugger.sgml | 269 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 222 insertions(+), 47 deletions(-)
diff --git a/en/winedev-debugger.sgml b/en/winedev-debugger.sgml
index b877063..31046c0 100644
--- a/en/winedev-debugger.sgml
+++ b/en/winedev-debugger.sgml
@@ -280,31 +280,208 @@ winedbg hl.exe -windowed
These usually show up like this:
</para>
<screen>
-|Unexpected Windows program segfault - opcode = 8b
-|Segmentation fault in Windows program 1b7:c41.
-|Loading symbols from ELF file /root/wine/wine...
-|....more Loading symbols from ...
-|In 16 bit mode.
-|Register dump:
-| CS:01b7 SS:016f DS:0287 ES:0000
-| IP:0c41 SP:878a BP:8796 FLAGS:0246
-| AX:811e BX:0000 CX:0000 DX:0000 SI:0001 DI:ffff
-|Stack dump:
-|0x016f:0x878a: 0001 016f ffed 0000 0000 0287 890b 1e5b
-|0x016f:0x879a: 01b7 0001 000d 1050 08b7 016f 0001 000d
-|0x016f:0x87aa: 000a 0003 0004 0000 0007 0007 0190 0000
-|0x016f:0x87ba:
-|
-|0050: sel=0287 base=40211d30 limit=0b93f (bytes) 16-bit rw-
-|Backtrace:
-|0 0x01b7:0x0c41 (PXSRV_FONGETFACENAME+0x7c)
-|1 0x01b7:0x1e5b (PXSRV_FONPUTCATFONT+0x2cd)
-|2 0x01a7:0x05aa
-|3 0x01b7:0x0768 (PXSRV_FONINITFONTS+0x81)
-|4 0x014f:0x03ed (PDOXWIN_ at SQLCURCB$Q6CBTYPEULN8CBSCTYPE+0x1b1)
-|5 0x013f:0x00ac
-|
-|0x01b7:0x0c41 (PXSRV_FONGETFACENAME+0x7c): movw %es:0x38(%bx),%dx
+Unhandled exception: page fault on write access to 0x00000000 in 32-bit code (0x0043369e).
+Register dump:
+ CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
+ EIP:0043369e ESP:0b3ee90c EBP:0b3ee938 EFLAGS:00010246( R- -- I Z- -P- )
+ EAX:00000072 EBX:7b8acff4 ECX:00000000 EDX:6f727265
+ ESI:7ba3b37c EDI:7ffa0000
+Stack dump:
+0x0b3ee90c: 7b82ced8 00000000 7ba3b348 7b884401
+0x0b3ee91c: 7b883cdc 00000008 00000000 7bc36e7b
+0x0b3ee92c: 7b8acff4 7b82ceb9 7b8acff4 0b3eea18
+0x0b3ee93c: 7b82ce82 00000000 00000000 00000000
+0x0b3ee94c: 00000000 0b3ee968 70d7ed7b 70c50000
+0x0b3ee95c: 00000000 0b3eea40 7b87fd40 7b82d0d0
+Backtrace:
+=>0 0x0043369e in elementclient (+0x3369e) (0x0b3ee938)
+ 1 0x7b82ce82 CONSOLE_SendEventThread+0xe1(pmt=0x0(nil)) [/usr/src/debug/wine-1.5.14/dlls/kernel32/console.c:1989] in kernel32 (0x0b3eea18)
+ 2 0x7bc76320 call_thread_func_wrapper+0xb() in ntdll (0x0b3eea28)
+ 3 0x7bc7916e call_thread_func+0x7d(entry=0x7b82cda0, arg=0x0(nil), frame=0xb3eeb18) [/usr/src/debug/wine-1.5.14/dlls/ntdll/signal_i386.c:2522] in ntdll (0x0b3eeaf8)
+ 4 0x7bc762fe RtlRaiseException+0x21() in ntdll (0x0b3eeb18)
+ 5 0x7bc7f3da start_thread+0xe9(info=0x7ffa0fb8) [/usr/src/debug/wine-1.5.14/dlls/ntdll/thread.c:408] in ntdll (0x0b3ef368)
+ 6 0xf7597adf start_thread+0xce() in libpthread.so.0 (0x0b3ef468)
+0x0043369e: movl %edx,0x0(%ecx)
+Modules:
+Module Address Debug info Name (143 modules)
+PE 340000- 3af000 Deferred speedtreert
+PE 3b0000- 3d6000 Deferred ftdriver
+PE 3e0000- 3e6000 Deferred immwrapper
+PE 400000- b87000 Export elementclient
+PE b90000- e04000 Deferred elementskill
+PE e10000- e42000 Deferred ifc22
+PE 10000000-10016000 Deferred zlibwapi
+ELF 41f75000-41f7e000 Deferred librt.so.1
+ELF 41ff9000-42012000 Deferred libresolv.so.2
+PE 48080000-480a8000 Deferred msls31
+PE 65340000-653d2000 Deferred oleaut32
+PE 70200000-70294000 Deferred wininet
+PE 702b0000-70328000 Deferred urlmon
+PE 70440000-704cf000 Deferred mlang
+PE 70bd0000-70c34000 Deferred shlwapi
+PE 70c50000-70ef3000 Deferred mshtml
+PE 71930000-719b8000 Deferred shdoclc
+PE 78130000-781cb000 Deferred msvcr80
+ELF 79afb000-7b800000 Deferred libnvidia-glcore.so.304.51
+ELF 7b800000-7ba3d000 Dwarf kernel32<elf>
+ \-PE 7b810000-7ba3d000 \ kernel32
+ELF 7bc00000-7bcd5000 Dwarf ntdll<elf>
+ \-PE 7bc10000-7bcd5000 \ ntdll
+ELF 7bf00000-7bf04000 Deferred <wine-loader>
+ELF 7c288000-7c400000 Deferred libvorbisenc.so.2
+PE 7c420000-7c4a7000 Deferred msvcp80
+ELF 7c56d000-7c5b6000 Deferred dinput<elf>
+ \-PE 7c570000-7c5b6000 \ dinput
+ELF 7c5b6000-7c600000 Deferred libdbus-1.so.3
+ELF 7c70e000-7c715000 Deferred libasyncns.so.0
+ELF 7c715000-7c77e000 Deferred libsndfile.so.1
+ELF 7c77e000-7c7e5000 Deferred libpulsecommon-1.1.so
+ELF 7c7e5000-7c890000 Deferred krnl386.exe16.so
+PE 7c7f0000-7c890000 Deferred krnl386.exe16
+ELF 7c890000-7c900000 Deferred ieframe<elf>
+ \-PE 7c8a0000-7c900000 \ ieframe
+ELF 7ca00000-7ca1a000 Deferred rasapi32<elf>
+ \-PE 7ca10000-7ca1a000 \ rasapi32
+ELF 7ca1a000-7ca21000 Deferred libnss_dns.so.2
+ELF 7ca21000-7ca25000 Deferred libnss_mdns4_minimal.so.2
+ELF 7ca25000-7ca2d000 Deferred libogg.so.0
+ELF 7ca2d000-7ca5a000 Deferred libvorbis.so.0
+ELF 7cd5d000-7cd9c000 Deferred libflac.so.8
+ELF 7cd9c000-7cdea000 Deferred libpulse.so.0
+ELF 7cdfe000-7ce23000 Deferred iphlpapi<elf>
+ \-PE 7ce00000-7ce23000 \ iphlpapi
+ELF 7cff1000-7cffd000 Deferred libnss_nis.so.2
+ELF 7d60d000-7d629000 Deferred wsock32<elf>
+ \-PE 7d610000-7d629000 \ wsock32
+ELF 7d80d000-7d828000 Deferred libnsl.so.1
+ELF 7d8cf000-7d8db000 Deferred libgsm.so.1
+ELF 7d8db000-7d903000 Deferred winepulse<elf>
+ \-PE 7d8e0000-7d903000 \ winepulse
+ELF 7d95c000-7d966000 Deferred libwrap.so.0
+ELF 7d966000-7d96d000 Deferred libxtst.so.6
+ELF 7d96d000-7d992000 Deferred mmdevapi<elf>
+ \-PE 7d970000-7d992000 \ mmdevapi
+ELF 7d9b3000-7d9d0000 Deferred msimtf<elf>
+ \-PE 7d9c0000-7d9d0000 \ msimtf
+ELF 7d9d0000-7d9e5000 Deferred comm.drv16.so
+PE 7d9e0000-7d9e5000 Deferred comm.drv16
+ELF 7da83000-7db5f000 Deferred libgl.so.1
+ELF 7db60000-7db63000 Deferred libx11-xcb.so.1
+ELF 7db63000-7db78000 Deferred system.drv16.so
+PE 7db70000-7db78000 Deferred system.drv16
+ELF 7db98000-7dca1000 Deferred opengl32<elf>
+ \-PE 7dbb0000-7dca1000 \ opengl32
+ELF 7dca1000-7dcb6000 Deferred vdmdbg<elf>
+ \-PE 7dcb0000-7dcb6000 \ vdmdbg
+ELF 7dcce000-7dd04000 Deferred uxtheme<elf>
+ \-PE 7dcd0000-7dd04000 \ uxtheme
+ELF 7dd04000-7dd0a000 Deferred libxfixes.so.3
+ELF 7dd0a000-7dd15000 Deferred libxcursor.so.1
+ELF 7dd16000-7dd1f000 Deferred libjson.so.0
+ELF 7dd24000-7dd38000 Deferred psapi<elf>
+ \-PE 7dd30000-7dd38000 \ psapi
+ELF 7dd78000-7dda1000 Deferred libexpat.so.1
+ELF 7dda1000-7ddd6000 Deferred libfontconfig.so.1
+ELF 7ddd6000-7dde6000 Deferred libxi.so.6
+ELF 7dde6000-7ddef000 Deferred libxrandr.so.2
+ELF 7ddef000-7de11000 Deferred libxcb.so.1
+ELF 7de11000-7df49000 Deferred libx11.so.6
+ELF 7df49000-7df5b000 Deferred libxext.so.6
+ELF 7df5b000-7df75000 Deferred libice.so.6
+ELF 7df75000-7e005000 Deferred winex11<elf>
+ \-PE 7df80000-7e005000 \ winex11
+ELF 7e005000-7e0a5000 Deferred libfreetype.so.6
+ELF 7e0a5000-7e0c5000 Deferred libtinfo.so.5
+ELF 7e0c5000-7e0ea000 Deferred libncurses.so.5
+ELF 7e123000-7e1eb000 Deferred crypt32<elf>
+ \-PE 7e130000-7e1eb000 \ crypt32
+ELF 7e1eb000-7e235000 Deferred dsound<elf>
+ \-PE 7e1f0000-7e235000 \ dsound
+ELF 7e235000-7e2a7000 Deferred ddraw<elf>
+ \-PE 7e240000-7e2a7000 \ ddraw
+ELF 7e2a7000-7e3e3000 Deferred wined3d<elf>
+ \-PE 7e2b0000-7e3e3000 \ wined3d
+ELF 7e3e3000-7e417000 Deferred d3d8<elf>
+ \-PE 7e3f0000-7e417000 \ d3d8
+ELF 7e417000-7e43b000 Deferred imm32<elf>
+ \-PE 7e420000-7e43b000 \ imm32
+ELF 7e43b000-7e46f000 Deferred ws2_32<elf>
+ \-PE 7e440000-7e46f000 \ ws2_32
+ELF 7e46f000-7e49a000 Deferred msacm32<elf>
+ \-PE 7e470000-7e49a000 \ msacm32
+ELF 7e49a000-7e519000 Deferred rpcrt4<elf>
+ \-PE 7e4b0000-7e519000 \ rpcrt4
+ELF 7e519000-7e644000 Deferred ole32<elf>
+ \-PE 7e530000-7e644000 \ ole32
+ELF 7e644000-7e6f7000 Deferred winmm<elf>
+ \-PE 7e650000-7e6f7000 \ winmm
+ELF 7e6f7000-7e7fa000 Deferred comctl32<elf>
+ \-PE 7e700000-7e7fa000 \ comctl32
+ELF 7e7fa000-7ea23000 Deferred shell32<elf>
+ \-PE 7e810000-7ea23000 \ shell32
+ELF 7ea23000-7eaf9000 Deferred gdi32<elf>
+ \-PE 7ea30000-7eaf9000 \ gdi32
+ELF 7eafb000-7eaff000 Deferred libnvidia-tls.so.304.51
+ELF 7eaff000-7eb09000 Deferred libxrender.so.1
+ELF 7eb09000-7eb0f000 Deferred libxxf86vm.so.1
+ELF 7eb0f000-7eb18000 Deferred libsm.so.6
+ELF 7eb18000-7eb32000 Deferred version<elf>
+ \-PE 7eb20000-7eb32000 \ version
+ELF 7eb32000-7ec87000 Deferred user32<elf>
+ \-PE 7eb40000-7ec87000 \ user32
+ELF 7ec87000-7ecf1000 Deferred advapi32<elf>
+ \-PE 7ec90000-7ecf1000 \ advapi32
+ELF 7ecf1000-7ed8f000 Deferred msvcrt<elf>
+ \-PE 7ed00000-7ed8f000 \ msvcrt
+ELF 7ef8f000-7ef9c000 Deferred libnss_files.so.2
+ELF 7ef9c000-7efc7000 Deferred libm.so.6
+ELF 7efc8000-7efe5000 Deferred libgcc_s.so.1
+ELF 7efe5000-7f000000 Deferred crtdll<elf>
+ \-PE 7eff0000-7f000000 \ crtdll
+ELF f73d0000-f73d4000 Deferred libxinerama.so.1
+ELF f73d4000-f73d8000 Deferred libxau.so.6
+ELF f73da000-f73df000 Deferred libdl.so.2
+ELF f73df000-f7591000 Dwarf libc.so.6
+ELF f7591000-f75ab000 Dwarf libpthread.so.0
+ELF f75ab000-f76ef000 Dwarf libwine.so.1
+ELF f7722000-f7728000 Deferred libuuid.so.1
+ELF f7729000-f774a000 Deferred ld-linux.so.2
+ELF f774a000-f774b000 Deferred [vdso].so
+Threads:
+process tid prio (all id:s are in hex)
+00000008 (D) C:\Perfect World Entertainment\Perfect World International\element\elementclient.exe
+ 00000031 0 <==
+ 00000035 15
+ 00000012 0
+ 00000021 0
+ 00000045 0
+ 00000044 0
+ 00000043 0
+ 00000038 15
+ 00000037 0
+ 00000036 15
+ 00000034 0
+ 00000033 0
+ 00000032 0
+ 00000027 0
+ 00000009 0
+0000000e services.exe
+ 0000000b 0
+ 00000020 0
+ 00000017 0
+ 00000010 0
+ 0000000f 0
+00000014 winedevice.exe
+ 0000001e 0
+ 0000001b 0
+ 00000016 0
+ 00000015 0
+0000001c plugplay.exe
+ 00000022 0
+ 0000001f 0
+ 0000001d 0
+00000023 explorer.exe
+ 00000024 0
</screen>
<para>
Steps to debug a crash. You may stop at any step, but please
@@ -315,17 +492,15 @@ winedbg hl.exe -windowed
<orderedlist>
<listitem>
<para>
- Get the reason for the crash. This is usually an access to
- an invalid selector, an access to an out of range address
- in a valid selector, popping a segment register from the
- stack or the like. When reporting a crash, report this
+ Get the reason for the crash. This is usually a
+ page fault, an unimplemented function in Wine,
+ or the like. When reporting a crash, report this
<emphasis>whole</emphasis> crashdump even if it doesn't
make sense to you.
</para>
<para>
- (In this case it is access to an invalid selector, for
- <systemitem>%es</systemitem> is <literal>0000</literal>, as
- seen in the register dump).
+ (In this case it is page fault on write access to 0x00000000.
+ Most likely Wine passed NULL to the Application or the like.)
</para>
</listitem>
<listitem>
@@ -335,23 +510,23 @@ winedbg hl.exe -windowed
Wine function, rerun Wine with the <parameter>WINEDEBUG=+relay</parameter>
environment variable set. This will
generate quite a lot of output, but usually the reason is
- located in the last call(s). Those lines usually look like
+ located in the last calls. Those lines usually look like
this:
</para>
<screen>
-|Call KERNEL.90: LSTRLEN(0227:0692 "text") ret=01e7:2ce7 ds=0227
- ^^^^^^^^^ ^ ^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^
- | | | | | |Datasegment
- | | | | |Return address
- | | | |textual parameter
- | | |
- | | |Argument(s). This one is a win16 segmented pointer.
- | |Function called.
- |The module, the function is called in. In this case it is KERNEL.
-
-|Ret KERNEL.90: LSTRLEN() retval=0x0004 ret=01e7:2ce7 ds=0227
- ^^^^^^
- |Returnvalue is 16 bit and has the value 4.
+000d:Call advapi32.RegOpenKeyExW(00000090,7eb94da0 L"Patterns",00000000,00020019,0033f968) ret=7eb39af8
+^^^^ ^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^
+| | | | | | |Return address.
+| | | | | |More arguments.
+| | | | |Textual parameter.
+| | | |Arguments.
+| | |Function called.
+| |The module, the function is called in.
+|The Thread ID in which the call was made.
+
+000d:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=7eb39af8
+ ^^^^^^^^^^^^^^^
+ |Returnvalue is 32-bit and has the value 0.
</screen>
</listitem>
<listitem>
@@ -409,7 +584,7 @@ winedbg hl.exe -windowed
You can also set a breakpoint for that function. Start wine
using <command>winedbg</command> instead of
<command>wine</command>. Once the debugger is running enter
- <command>break</command> <parameter>KERNEL_LSTRLEN</parameter>
+ <command>break</command> <parameter>RegOpenKeyExW</parameter>
(replace by function you want to debug, CASE IS RELEVANT)
to set a breakpoint. Then
use <command>continue</command> to start normal
--
1.8.1.2
More information about the wine-patches
mailing list