http://bugs.winehq.org/show_bug.cgi?id=32526
Bug #: 32526 Summary: Darksiders crashes on start without native d3dx9_36 Product: Wine Version: 1.5.20 Platform: x86 OS/Version: Linux Status: NEW Severity: minor Priority: P2 Component: directx-d3dx9 AssignedTo: wine-bugs@winehq.org ReportedBy: gyebro69@gmail.com CC: wine-bugs@winehq.org Classification: Unclassified
Created attachment 42913 --> http://bugs.winehq.org/attachment.cgi?id=42913 terminal output
Darksiders (Steam version) crashes with the built-in d3dx9_36, just before the first intro video should be played. Native d3dx9_36 is a workaround to the crash.
Nvidia 250 / driver 304.64
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #1 from GyB gyebro69@gmail.com 2012-12-23 10:02:30 CST --- Created attachment 42914 --> http://bugs.winehq.org/attachment.cgi?id=42914 +d3dx log
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #2 from Rico kgbricola@web.de 2012-12-23 13:24:47 CST --- Created attachment 42915 --> http://bugs.winehq.org/attachment.cgi?id=42915 shader comment debug patch
Please try the attached patch and get a +d3dx log. The patch adds a couple of debug printings.
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #3 from GyB gyebro69@gmail.com 2012-12-23 13:40:37 CST --- Created attachment 42916 --> http://bugs.winehq.org/attachment.cgi?id=42916 +d3dx log after shader comment patch
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #4 from Rico kgbricola@web.de 2012-12-23 14:28:59 CST --- Created attachment 42918 --> http://bugs.winehq.org/attachment.cgi?id=42918 Possible hack to workarround the problem.
The app seems to pass an empty byte code as shader into D3DXGetShaderConstantTable(). Thus it's not D3DSIO_END and will read through the whole address space which will more or less crash sooner or later if no D3DSIO_END is hit by luck.
There are two issues: - Tests show that D3DXFindShaderComment() (which is used by D3DXGetShaderConstantTable()) returns 0x88760b59 if it gets an empty byte code. - D3DXGetShaderConstantTable() returns D3D_OK aclearednd table = NULL
Please try the attached patch (on clean git).
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #5 from GyB gyebro69@gmail.com 2012-12-23 14:47:42 CST --- (In reply to comment #4)
Created attachment 42918 [details] Possible hack to workarround the problem.
Please try the attached patch (on clean git).
Thanks, with the patch the game starts and can get past the videos. Native d3dx9_36 is still needed (black screen in the menu), but that's another issue. These are common in the terminal with the patch:
fixme:d3dx:D3DXGetShaderConstantTableEx Empty byte_code!
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #6 from Rico kgbricola@web.de 2012-12-23 15:16:51 CST --- Yes, that's expected. I need to add a nice test and the patch needs some small cleanup.
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #7 from Henri Verbeet hverbeet@gmail.com 2012-12-24 00:55:46 CST --- (In reply to comment #4)
return 0x88760b59; /* ??? */
D3DXERR_INVALIDDATA.
- if (!*byte_code)
I suppose what you're looking for is a valid version token.
http://bugs.winehq.org/show_bug.cgi?id=32526
Rico kgbricola@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #42915|0 |1 is obsolete| | Attachment #42918|0 |1 is obsolete| |
--- Comment #8 from Rico kgbricola@web.de 2012-12-27 07:03:19 CST --- Created attachment 42969 --> http://bugs.winehq.org/attachment.cgi?id=42969 Improved patches
Thanks Henri. Attached are the improved patches. They handle invalid shaders and add some tests for that. The patches fix the invalid shader for D3DXGetShaderConstantTableEx(), D3DXFindShaderComment() and fix that the constant_table is always set to NULL (not related to this bug).
I attached them here, because due to spam send from some web.de accounts the patches mail server does not accept patches from "web.de" accounts (including mine). So I have to wait until the problem is solved. I'll send them when an easy solution is found. :-)
http://bugs.winehq.org/show_bug.cgi?id=32526
--- Comment #9 from GyB gyebro69@gmail.com 2012-12-27 07:25:08 CST --- (In reply to comment #8)
Created attachment 42969 [details] Improved patches
Thanks, the patches work well with Darksiders, the game loads to the menu without crashing. Until these patches find their way into upstream I'll keep testing them against other games as well, if you don't mind..
http://bugs.winehq.org/show_bug.cgi?id=32526
Rico kgbricola@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #10 from Rico kgbricola@web.de 2013-01-08 15:01:06 CST --- Fixed by 6cb430102117b21fa96009c774af9e5c99e61777 .
http://bugs.winehq.org/show_bug.cgi?id=32526
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |6cb430102117b21fa96009c774a | |f9e5c99e61777
http://bugs.winehq.org/show_bug.cgi?id=32526
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2013-01-18 14:57:09 CST --- Closing bugs fixed in 1.5.22.