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?

On Mon, Jul 21, 2008 at 2:58 PM, H. Verbeet <hverbeet@gmail.com> wrote:
2008/7/21 Andrew Fenn <andrewfenn@gmail.com>:
> fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
> fixme:d3d_shader:shader_glsl_free FREE SHADER
> fixme:d3d:IWineD3DDeviceImpl_Reset BEFORE, hr: 0x00000000
> fixme:d3d:IWineD3DDeviceImpl_Reset AFTER, hr: 0x00000000
> fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
> fixme:d3d_shader:shader_glsl_free FREE SHADER
> fixme:d3d:IWineD3DDeviceImpl_Reset BEFORE, hr: 0x00000000
> fixme:d3d:IWineD3DDeviceImpl_Reset AFTER, hr: 0x00000000
> fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
> fixme:d3d_shader:shader_glsl_free FREE SHADER
> fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
> fixme:d3d_shader:shader_glsl_free FREE SHADER
> wine: Unhandled page fault on read access to 0x00000008 at address
> 0x7e44abcc (thread 0009), starting debugger...
>
> The last two seem interesting where they don't reach shader_alloc_private()
> portion of the code, could this maybe be part of the problem?
>
That's probably the reason, yes. I don't see how Reset can return
before calling shader_alloc_private() though.