http://bugs.winehq.org/show_bug.cgi?id=26383
Summary: Bulletstorm: FBO removed just before bind, resulting in crash. Product: Wine Version: 1.3.15 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: NightNord@gmail.com
This is next-gen of #26265 which was, mostly wrong, belived to be a duplicate of #23048. It seems that game also affected by #23048 anyway, but futher investigation required.
Environment: Steam installed Bulletstorm, winetricks xact physx vcrun2005 gfw HD4570, fglrx-11.2
I'll attach two WINEDEBUG="+d3d,+d3d_caps,err+all" logs. First comes from vanilla wine and ends with X11_CritSection hanging up. By some lines right above hang you may see, that process actually crashed, but debugger is messed up. Right above debugger messages, there is two lines:
trace:d3d:context_destroy_fbo_entry Destroy FBO 7 trace:d3d:context_bind_fbo glBindFramebuffer() call ok.
By trivial TRACE into context_bind_fbo you may check, that binded FBO is also 7. Fglrx seems not to have any additional checks, so it simply locks down, dumps some garbage on screen and finally bails out. Only console-reset (ctrl+alt+f1 and back) and wine kill may recover it from this state.
Second log is from hacked wine, with context_destory_fbo call in context_destroy_fbo_entry commented out. As you may see, game proceeds some futher - it shows terribly miscolored scene and suggest to "Sign In", crashing afterwards (after trying to acquire NULL context target)
Second crash may be because a hack, but first is almost sure not-fglrx related. Maybe nvidia just checks buffer existence before binding it? Anyway, same log from NVidia user whould be useful.