http://bugs.winehq.org/show_bug.cgi?id=30179
--- Comment #1 from Stefan Dösinger stefan@codeweavers.com 2012-03-15 18:06:10 CDT --- The app is broken. It is accessing buffer memory after unlocking the buffer:
err:d3d:wined3d_buffer_map 0x83bd8c8: Returning memory at 0x6a67020 (base 0x6a67020, offset 0), lock count 1. err:d3d:wined3d_buffer_unmap buffer 0x83bd8c8, count 1 wine: Unhandled page fault on write access to 0x06a67020 at address 0x60605b (thread 0024), starting debugger... Unhandled exception: page fault on write access to 0x06a67020 in 32-bit code (0x0060605b).
This used to work sort of without VBOs because our HeapAlloc'ed memory remains at the same address. Even though the written data doesn't necessarily show up in draws, the write at least doesn't cause an exception.
This is a d3d9 app, the buffer is a dynamic buffer. The app doesn't have any high ground here. The only feasible option I see is offering the user a way to disable dynamic buffers, e.g. by making the HKCU/software/wine/opengl/disabledextensions registry key work for wined3d.
Other than that the application tends to freeze before showing the main menu or before entering a game, even if I limit it to one CPU as the appdb suggests. This is not related to this bug though.