one liner patch to stop crash, everquest2.exe

H. Verbeet hverbeet at gmail.com
Mon Jul 21 06:03:06 CDT 2008


2008/7/21 Andrew Fenn <andrewfenn at gmail.com>:
> Here's my uneducated idea about what's happening, it's calling the
> USER_SetWindowPos() in /user32/winpos.c to an x and y of 0 which goes off to
> SendMessageW.
>
> SendMessageW calls send_message which in turn calls call_window_proc. At
> this point something resets because SendMessageW should log both a "1" and
> "2\n" which I added to be printed out but as you can see below it only
> prints out a "1" and then goes on to IWineD3DDeviceImpl_Reset after hitting
> call_window_proc..
>
> fixme:msg:SendMessageW 1sendmsg1
> fixme:msg:send_message sendmsg2
> fixme:msg:send_message sendmsg3
> fixme:d3d:IWineD3DDeviceImpl_Reset HELLO, hr: 0x00000000
> fixme:d3d_shader:shader_glsl_free FREE SHADER
> wine: Unhandled page fault on read access to 0x00000008 at address
> 0x7e452e5c (thread 0009), starting debugger...
> Unhandled exception: page fault on read access to 0x00000008 in 32-bit code
> (0x7e452e5c).
>
> Does any of that make any sense?
>
Ah, so it's essentially a recursive Reset call. My guess would be that
we don't want to allow that, but it requires some tests on native
win32 to verify. You could try returning WINED3DERR_INVALIDCALL when
Reset gets called from inside another Reset call, to see how the
application reacts to that.



More information about the wine-devel mailing list