http://veracity.ath.cx/~diefool/failure.gz Log is about 100 megs unzipped.
This is pretty bizzare. I gzipped a +all log. When a joystick is plugged into my machine, many dinput apps crash with meaningless backtraces unrelated to dinput.
It affects a fair amount of apps http://www.blockland.us/blockland/index.asp is an easy one to work on since it crashes as soon as the program starts. It also only crashes when my joystick is plugged in and wine can see /dev/js0.
0047:trace:dinput:create_DataFormat Matching : 0047:trace:dinput:create_DataFormat - Asked (5) : 0047:trace:dinput:create_DataFormat * GUID: {a36d02e3-c9f3-11cf-bfc7-444553540000} ('GUID_RzAxis') 0047:trace:dinput:create_DataFormat * Offset: 20 0047:trace:dinput:create_DataFormat * dwType: 00000603 0047:trace:dinput:create_DataFormat Type: DIDFT_RELAXIS DIDFT_ABSAXIS / Instance: 6 0047:trace:dinput:create_DataFormat - Wine (5) : 0047:trace:dinput:create_DataFormat * GUID: {a36d02e3-c9f3-11cf-bfc7-444553540000} ('GUID_RzAxis') 0047:trace:dinput:create_DataFormat * Offset: 20 0047:trace:dinput:create_DataFormat * dwType: 80ffff03 0047:trace:dinput:create_DataFormat Type: DIDFT_RELAXIS DIDFT_ABSAXIS (unhandled: 80000000) / Instance: DIDFT_ANYINSTANCE 0047:trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x7e98f3a8 0047:trace:seh:EXC_RtlRaiseException info[0]=00000000 0047:trace:seh:EXC_RtlRaiseException info[1]=00000000 0047:trace:seh:EXC_RtlRaiseException eax=00000010 ebx=7e9aa5d8 ecx=00000010 edx=77c5bd50 esi=00000000 edi=7eda3bcc 0047:trace:seh:EXC_RtlRaiseException ebp=77aefad4 esp=77aefa3c cs=0073 ds=007b es=007b fs=003b gs=0033 flags=00010216 0047:trace:seh:EXC_CallHandler calling handler at 0x6437c8 code=c0000005 flags=0 0047:Call kernel32.UnhandledExceptionFilter(77aef5e8) ret=00649b15
I think this is where it gives up in the log. ^^
I'd like to debug this, anyone know where to start?
__________________________________ Do you Yahoo!? Yahoo! Small Business - Try our new resources site! http://smallbusiness.yahoo.com/resources/
Dylan Taft wrote:
http://veracity.ath.cx/~diefool/failure.gz Log is about 100 megs unzipped.
This is pretty bizzare. I gzipped a +all log. When a joystick is plugged into my machine, many dinput apps crash with meaningless backtraces unrelated to dinput.
It affects a fair amount of apps http://www.blockland.us/blockland/index.asp is an easy one to work on since it crashes as soon as the program starts. It also only crashes when my joystick is plugged in and wine can see /dev/js0.
0047:trace:dinput:create_DataFormat Matching : 0047:trace:dinput:create_DataFormat - Asked (5) : 0047:trace:dinput:create_DataFormat * GUID: {a36d02e3-c9f3-11cf-bfc7-444553540000} ('GUID_RzAxis') 0047:trace:dinput:create_DataFormat * Offset: 20 0047:trace:dinput:create_DataFormat * dwType: 00000603 0047:trace:dinput:create_DataFormat Type: DIDFT_RELAXIS DIDFT_ABSAXIS / Instance: 6 0047:trace:dinput:create_DataFormat - Wine (5) : 0047:trace:dinput:create_DataFormat * GUID: {a36d02e3-c9f3-11cf-bfc7-444553540000} ('GUID_RzAxis') 0047:trace:dinput:create_DataFormat * Offset: 20 0047:trace:dinput:create_DataFormat * dwType: 80ffff03 0047:trace:dinput:create_DataFormat Type: DIDFT_RELAXIS DIDFT_ABSAXIS (unhandled: 80000000) / Instance: DIDFT_ANYINSTANCE 0047:trace:seh:EXC_RtlRaiseException code=c0000005 flags=0 addr=0x7e98f3a8 0047:trace:seh:EXC_RtlRaiseException info[0]=00000000 0047:trace:seh:EXC_RtlRaiseException info[1]=00000000 0047:trace:seh:EXC_RtlRaiseException eax=00000010 ebx=7e9aa5d8 ecx=00000010 edx=77c5bd50 esi=00000000 edi=7eda3bcc 0047:trace:seh:EXC_RtlRaiseException ebp=77aefad4 esp=77aefa3c cs=0073 ds=007b es=007b fs=003b gs=0033 flags=00010216 0047:trace:seh:EXC_CallHandler calling handler at 0x6437c8 code=c0000005 flags=0 0047:Call kernel32.UnhandledExceptionFilter(77aef5e8) ret=00649b15
I think this is where it gives up in the log. ^^
I'd like to debug this, anyone know where to start?
__________________________________ Do you Yahoo!? Yahoo! Small Business - Try our new resources site! http://smallbusiness.yahoo.com/resources/
Could you try this patch?
Index: dlls/dinput/device.c =================================================================== RCS file: /home/wine/wine/dlls/dinput/device.c,v retrieving revision 1.25 diff -u -p -r1.25 device.c --- dlls/dinput/device.c 24 Mar 2005 21:01:39 -0000 1.25 +++ dlls/dinput/device.c 16 Apr 2005 01:25:51 -0000 @@ -289,34 +289,35 @@ DataFormat *create_DataFormat(const DIDA int *done; int index = 0; DWORD next = 0; - + ret = HeapAlloc(GetProcessHeap(), 0, sizeof(DataFormat)); - + done = HeapAlloc(GetProcessHeap(), 0, sizeof(int) * asked_format->dwNumObjs); memset(done, 0, sizeof(int) * asked_format->dwNumObjs); - + dt = HeapAlloc(GetProcessHeap(), 0, asked_format->dwNumObjs * sizeof(DataTransform)); - + TRACE("Creating DataTransform : \n");
for (i = 0; i < wine_format->dwNumObjs; i++) { offset[i] = -1; - + for (j = 0; j < asked_format->dwNumObjs; j++) { if (done[j] == 1) continue; - + if (/* Check if the application either requests any GUID and if not, it if matches * the GUID of the Wine object. */ ((asked_format->rgodf[j].pguid == NULL) || + (wine_format->rgodf[i].pguid == NULL) || (IsEqualGUID(wine_format->rgodf[i].pguid, asked_format->rgodf[j].pguid))) && (/* Then check if it accepts any instance id, and if not, if it matches Wine's * instance id. */ ((asked_format->rgodf[j].dwType & 0x00FFFF00) == DIDFT_ANYINSTANCE) || - (wine_format->rgodf[i].dwType & asked_format->rgodf[j].dwType))) { + ((wine_format->rgodf[i].dwType & asked_format->rgodf[j].dwType)) & 0x00FFFF00)) { done[j] = 1; @@ -329,19 +330,19 @@ DataFormat *create_DataFormat(const DIDA TRACE(" * dwType: %08lx\n", asked_format->rgodf[j].dwType); TRACE(" "); _dump_EnumObjects_flags(asked_format->rgodf[j].dwType); TRACE("\n"); - TRACE(" - Wine (%d) :\n", j); + TRACE(" - Wine (%d) :\n", i); TRACE(" * GUID: %s ('%s')\n", - debugstr_guid(wine_format->rgodf[j].pguid), - _dump_dinput_GUID(wine_format->rgodf[j].pguid)); - TRACE(" * Offset: %3ld\n", wine_format->rgodf[j].dwOfs); - TRACE(" * dwType: %08lx\n", wine_format->rgodf[j].dwType); - TRACE(" "); _dump_EnumObjects_flags(wine_format->rgodf[j].dwType); TRACE("\n"); + debugstr_guid(wine_format->rgodf[i].pguid), + _dump_dinput_GUID(wine_format->rgodf[i].pguid)); + TRACE(" * Offset: %3ld\n", wine_format->rgodf[i].dwOfs); + TRACE(" * dwType: %08lx\n", wine_format->rgodf[i].dwType); + TRACE(" "); _dump_EnumObjects_flags(wine_format->rgodf[i].dwType); TRACE("\n"); if (wine_format->rgodf[i].dwType & DIDFT_BUTTON) dt[index].size = sizeof(BYTE); else dt[index].size = sizeof(DWORD); - dt[index].offset_in = wine_format ->rgodf[i].dwOfs; + dt[index].offset_in = wine_format->rgodf[i].dwOfs; if (asked_format->rgodf[j].dwOfs < next) { WARN("bad format: dwOfs=%ld, changing to %ld\n", asked_format->rgodf[j].dwOfs, next); dt[index].offset_out = next;
I was having this issue with one of my games too, but this patch seems to have fixed it. However, now I'm hitting an error in kernel32. (System Shock 2, for the curious.)
What traces should I turn on to help track this down?
wine: Unhandled exception (thread 0009), starting debugger... WineDbg starting on pid 0x8 Unhandled exception: page fault on read access to 0x50ff5303 in 32-bit code (0x77b572b0). In 32 bit mode. Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:77b572b0 ESP:77adf794 EBP:77adf7f8 EFLAGS:00210206( - 00 - RIP1) EAX:00000001 EBX:77c0e4a4 ECX:00000001 EDX:50ff5303 ESI:ffffffff EDI:50ff5303 Stack dump: 0x77adf794: 00000073 77adf7d4 779ad89c 779ada8c 0x77adf7a4: 00010022 779ad884 77adf7ec 77921f97 0x77adf7b4: 005c10e0 00010022 0000007d ffffffec 0x77adf7c4: 77adf944 77adf7dc 779cf6aa 00000001 0x77adf7d4: 00000001 00000000 00000000 779ada8c 0x77adf7e4: 779cf6aa 77adf944 77c0e4a4 77adf914 Backtrace: =>1 0x77b572b0 INSTR_EmulateInstruction(rec=0x77adfbe0, context=0x77adf914) [/home/ioti/debprogs/wine/wine.cvs/dlls/kernel/instr.c:449] in kernel32 (0x77adf7f8) 2 0x77b9e3df vectored_handler(ptrs=0x77adf82c) [/home/ioti/debprogs/wine/wine.cvs/dlls/kernel/wowthunk.c:358] in kernel32 (0x77adf814) 3 0x77ebc479 call_vectored_handlers+0x59(rec=0x77adfbe0, context=0x77adf914) [/home/ioti/debprogs/wine/wine.cvs/dlls/ntdll/exception.c:196] in ntdll (0x77adf840) 4 0x77ebc655 EXC_RtlRaiseException+0xa5(rec=0x77adfbe0, context=0x77adf914) [/home/ioti/debprogs/wine/wine.cvs/dlls/ntdll/exception.c:260] in ntdll (0x77adf8e4) 5 0x77edce6c raise_segv_exception+0x3c(rec=0x77adfbe0, context=0x77adf914) [/home/ioti/debprogs/wine/wine.cvs/dlls/ntdll/signal_i386.c:887] in ntdll (0x77adf900) 6 0x77ee7574 __wine_call_from_32_restore_regs+0x0 in ntdll (0x7b19a19c) 7 0x7b1a53f8 (0x00658080) 8 0x004d30d0 in shock2 (+0xd30d0) (0x005a5440) 9 0x0c24548b (0x0424448b) 10 0x00000000 (0x00000000) 0x77b572b0 INSTR_EmulateInstruction+0x80 [/home/ioti/debprogs/wine/wine.cvs/dlls/kernel/instr.c:449] in kernel32: movzbl 0x0(%edi),%edx 449 switch(*instr)