http://bugs.winehq.org/show_bug.cgi?id=12829
Summary: The game crashes with an EXCEPTION_ACCESS_VIOLATION error. Product: Wine Version: 0.9.60 Platform: PC URL: http://appdb.winehq.org/objectManager.php?sClass=version &iId=11736 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: Salz85@gmail.com
Viper Racing crashes alomst immediately , opening a notepad instance with some informations regarding the triple buffer status.
Contents of the notepad instance:
--
======================================================================
v1.0
======================================================================
No mapfile present
Config Dir: C:\SIERRA\Viper Racing\Config\
vid: 16 meg card (reported:256.585938)
vid: using AGP textures
try triple buffer
vid: triple buffer on
NON-DEBUG
( 00415680 , none , my_handler )
( 00451E8B , EXCEPTION_ACCESS_VIOLATION , ? )
--
It crashes wine too, with the message saved on the following attachment.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #1 from mr jingle Salz85@gmail.com 2008-04-27 10:55:44 --- Created an attachment (id=12523) --> (http://bugs.winehq.org/attachment.cgi?id=12523) wine error log for viper racing.
http://bugs.winehq.org/show_bug.cgi?id=12829
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|The game crashes with an |Viper Racing crashes with an |EXCEPTION_ACCESS_VIOLATION |EXCEPTION_ACCESS_VIOLATION |error. |error.
--- Comment #2 from Juan Lang juan_lang@yahoo.com 2008-04-28 10:51:49 --- Can you configure it not to use triple buffering?
Also, it's helpful to name the application in the summary--I've changed that.
http://bugs.winehq.org/show_bug.cgi?id=12829
Lei Zhang thestig@google.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #12523|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #3 from mr jingle Salz85@gmail.com 2008-04-28 17:09:26 --- (In reply to comment #2)
Can you configure it not to use triple buffering?
Nope. At least, it doesn't look like I can disable it both from the options screen , the options.cfg file or the command line. I've installed the game under windows, disabled any graphic related option (even shadows, textures, bilinear filtering and so on), enabled all the compatibility flags for the audio but if the configuration is copied to the Config folder it still crashes with the same error.
I would exclude any error caused by cd-check protection considering that the last patch removed it.
I'm including the options.cfg , it should be used with the last patch (the data.bin file should be put inside the Data/ folder.)
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #4 from mr jingle Salz85@gmail.com 2008-04-28 17:10:14 --- Created an attachment (id=12556) --> (http://bugs.winehq.org/attachment.cgi?id=12556) options.cfg file (to be put inside the Config/ folder)
http://bugs.winehq.org/show_bug.cgi?id=12829
jtsn jtsn@gmx.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jtsn@gmx.de
--- Comment #5 from jtsn jtsn@gmx.de 2008-05-20 05:00:05 --- About four years ago, I have successfully played Viper Racing with a wine alpha snapshot (long before 0.9). Unfortunately, I don't remember the exact date of the snapshot. The game runned perfectly without any graphics problems (gold).
Tried today with wine 1.0rc2, it crashes (same symptoms as mr jingle). Looks like a heavy regression.
http://bugs.winehq.org/show_bug.cgi?id=12829
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox_xerox2000@yahoo.co.uk URL|http://appdb.winehq.org/obje%7Chttp://www.download.com/Vipe |ctManager.php?sClass=version|r-Racing-updated-demo/3000- |&iId=11736 |7523_4- | |10023672.html?cdlPid=897572 Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |download
--- Comment #6 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2008-05-20 08:50:33 --- The demo crashes in the same way. Confirming this
http://bugs.winehq.org/show_bug.cgi?id=12829
Andrew Nguyen arethusa26@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |arethusa26@gmail.com
--- Comment #7 from Andrew Nguyen arethusa26@gmail.com 2008-10-26 21:22:48 --- Still a problem in 1.1.7.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #8 from mr jingle Salz85@gmail.com 2010-04-10 08:29:37 --- Still not working, using wine-1.1.42 .
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #9 from mr jingle Salz85@gmail.com 2010-08-22 16:49:00 --- No changes as far wine-1.3.0 is concerned.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #10 from mr jingle Salz85@gmail.com 2010-10-13 12:01:12 CDT --- No changes as far 1.3.2 is concerned.
BUT.
Out of curiosity I've followed the suggestion by jtsn,trying to the oldest build of wine ( with directx 8 support ) I could find:
I've been able to build wine-20050930 under wine 10.04, ( reminding me at the same time why I chose working as graphic designer and musician instead of being a developer :P ) and the game actually works quite well.
Is even possible doing a regression testing with a wine version so old? I've used in some cases older libraries and some ugly hackish solution to make it compile, and, as I said before, I'm not a developer.
In any case, could somebody change the status of this bug as REGRESSION?
http://bugs.winehq.org/show_bug.cgi?id=12829
mr jingle Salz85@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #11 from mr jingle Salz85@gmail.com 2010-10-13 14:08:26 CDT --- (In reply to comment #10)
No changes as far 1.3.2 is concerned.
BUT.
Out of curiosity I've followed the suggestion by jtsn,trying to the oldest build of wine ( with directx 8 support ) I could find:
I've been able to build wine-20050930 under wine 10.04, ( reminding me at the
typo, I meant ubuntu 10.04.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #12 from jtsn jtsn@gmx.de 2010-10-13 14:23:41 CDT --- Perhaps the change from the Windows 95/98/Me ABI to the NT/2000/XP ABI in WINE triggers this bug. Could someone with more experience with the code verify this?
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #13 from Austin English austinenglish@gmail.com 2010-10-13 17:02:16 CDT --- (In reply to comment #10)
No changes as far 1.3.2 is concerned.
BUT.
Out of curiosity I've followed the suggestion by jtsn,trying to the oldest build of wine ( with directx 8 support ) I could find:
I've been able to build wine-20050930 under wine 10.04, ( reminding me at the same time why I chose working as graphic designer and musician instead of being a developer :P ) and the game actually works quite well.
Is even possible doing a regression testing with a wine version so old? I've used in some cases older libraries and some ugly hackish solution to make it compile, and, as I said before, I'm not a developer.
Well, if you managed to build that old of a wine version, a regression test shouldn't be too much harder.
Though my first guess would be c8901d6f6253f6c97610eb1068ac4ff89758ed0a, see e.g., bug 21878 and others.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #14 from mr jingle Salz85@gmail.com 2010-10-27 11:22:12 CDT --- Trying to do a regression testing from wine-0.9.15 as last "good" build (i.e. before patch c8901d6f6253f6c97610eb1068ac4ff89758ed0a was committed) under ubuntu 10.10 ( gcc version 4.4.5 ) gives only a segmentation fault.
http://bugs.winehq.org/show_bug.cgi?id=12829
mr jingle Salz85@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefan@codeweavers.com
--- Comment #15 from mr jingle Salz85@gmail.com 2011-01-08 13:08:54 CST --- Ok, after some time I've tried building wine since 0.9.15 on a chrooted enviroment. LTS 6.06 to be precise; not too bad considering that until some day ago I had no idea what "chroot" meant.
And strangely enough, it seems that the patch that causes the error is:
3862f8e3d771fef8dd99fd0029387f91671f62a4 is first bad commit diff-tree 3862f8e3d771fef8dd99fd0029387f91671f62a4 (from c8901d6f6253f6c97610eb1068ac4ff89758ed0a) Author: Stefan Dösinger stefan@codeweavers.com Date: Thu Jun 15 12:54:19 2006 +0200
wined3d: Support more than one back buffer.
:040000 040000 67589bfed4fe0ed2619ce120d17eff82e3ca24f0 4464594fe1faa1ffb8a690fba281776949ac7b4e M dlls
instead of the patch suggested by Austin English.
http://bugs.winehq.org/show_bug.cgi?id=12829
Stefan Dösinger stefandoesinger@gmx.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefandoesinger@gmx.at
--- Comment #16 from Stefan Dösinger stefandoesinger@gmx.at 2011-01-08 16:45:02 CST --- This is a quite old bug, with a quite old patch that caused the regression. On first sight I'd say that enabling more than one back buffer enabled some advanced rendering mode in the game that is crashing for an entirely unrelated reason. You can confirm this theory by modifying IWineD3DImpl_CreateDevice in dlls/wined3d/directx.c to return WINED3DERR_INVALIDCALL if BackBufferCount in the presentation parameters is bigger than 1.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #17 from mr jingle Salz85@gmail.com 2011-01-09 07:19:23 CST --- I'm trying to use device.c as a reference, but I don't really understand how to access IWineD3DSwapChainImpl from IWineD3DImpl_CreateDevice.
(I should state beforehand that I've never written anything more complex than a flash game; hence sorry if my question may sound obtuse.)
(In reply to comment #16)
This is a quite old bug, with a quite old patch that caused the regression. On first sight I'd say that enabling more than one back buffer enabled some advanced rendering mode in the game that is crashing for an entirely unrelated reason. You can confirm this theory by modifying IWineD3DImpl_CreateDevice in dlls/wined3d/directx.c to return WINED3DERR_INVALIDCALL if BackBufferCount in the presentation parameters is bigger than 1.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #18 from jtsn jtsn@gmx.de 2011-01-09 07:40:48 CST --- (In reply to comment #17)
(In reply to comment #16)
This is a quite old bug, with a quite old patch that caused the regression. On first sight I'd say that enabling more than one back buffer enabled some advanced rendering mode in the game that is crashing for an entirely unrelated reason. You can confirm this theory by modifying IWineD3DImpl_CreateDevice in dlls/wined3d/directx.c to return WINED3DERR_INVALIDCALL if BackBufferCount in the presentation parameters is bigger than 1.
I'm trying to use device.c as a reference, but I don't really understand how to access IWineD3DSwapChainImpl from IWineD3DImpl_CreateDevice.
Adjusting WINED3DPRESENT_BACK_BUFFER_MAX in include/wine/wined3d.idl to 1 should give the same result.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #19 from mr jingle Salz85@gmail.com 2011-01-09 10:19:44 CST --- Ok, now the game shows the following error (still inside a notepad instance):
====================================================================== v1.0 ====================================================================== No mapfile present Config Dir: C:\SIERRA\Viper Racing\Config\ vid: 16 meg card (reported:256.585938) vid: using AGP textures try triple buffer unable to create surface unknown error: 8876086c can't create screens Unable to create surface(s) ============================================================ EXCEPTION: Task "<main>" @ 00451E8B : EXCEPTION_ACCESS_VIOLATION NON-DEBUG ( 00415680 , none , my_handler ) ( 00451E8B , EXCEPTION_ACCESS_VIOLATION , ? ) ============================================================
meanwhile wine shows this message: http://pastebin.com/j9cnKd80
http://bugs.winehq.org/show_bug.cgi?id=12829
Henri Verbeet hverbeet@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |3862f8e3d771fef8dd99fd00293 | |87f91671f62a4
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #20 from Stefan Dösinger stefan@codeweavers.com 2011-10-18 14:54:43 CDT --- I suspect that the regression test result is wrong, and the actual patch that breaks this game is c8901d6f6253f6c97610eb1068ac4ff89758ed0a, the ddraw rewrite and the patch right before 3862f8e3d771fef8dd99fd0029387f91671f62a4(the more-than-one-backbuffer patch)
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #21 from Stefan Dösinger stefan@codeweavers.com 2011-10-18 15:01:33 CDT --- Created attachment 36988 --> http://bugs.winehq.org/attachment.cgi?id=36988 Exception as reported by winedbg
This is the exception winedbg reports if you attach it. You can't run "Viper Racing Demo.exe" in winedbg because it just spawns another process. Instead I placed a Sleep(10000) in the last ddraw call (IDirect3DImpl_GetCaps) and attached the debugger to the running race.bin process.
http://bugs.winehq.org/show_bug.cgi?id=12829
--- Comment #22 from Stefan Dösinger stefan@codeweavers.com 2011-10-18 16:26:17 CDT --- Created attachment 36991 --> http://bugs.winehq.org/attachment.cgi?id=36991 ddraw: Don't write HelDesc in IDirect3DDevice3::GetCaps
Looks like the game is trying to dereference our D3DDEVICEDESC.dwFlags DWORD, probably like trying to find a pot of gold at the end of the rainbow. It passes some internal data structure to the lpD3DHELDevDesc parameter of IDirect3DDevice2::GetCaps and we write our capabilities there. The attached hack fixes the problem.
As usual, this needs some tests to find out in which situations lpD3DHELDevDesc is written. Possibly this never happens, possibly this only happens when the device is a RGB, Ramp or MMX device, and may or may not be the case with the REF device.
http://bugs.winehq.org/show_bug.cgi?id=12829
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #36991|0 |1 is obsolete| |
--- Comment #23 from Stefan Dösinger stefan@codeweavers.com 2011-11-08 17:37:55 CST --- Created attachment 37389 --> http://bugs.winehq.org/attachment.cgi?id=37389 Clean fix
The attached patch is a proper fix with tests. It turns out that this function returns an error if either pointer is NULL, or dwSize is incorrect.
http://bugs.winehq.org/show_bug.cgi?id=12829
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |adys.wh@gmail.com Component|-unknown |directx-ddraw
http://bugs.winehq.org/show_bug.cgi?id=12829
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #37389|0 |1 is obsolete| |
--- Comment #24 from Stefan Dösinger stefan@codeweavers.com 2011-11-10 13:49:48 CST --- Created attachment 37432 --> http://bugs.winehq.org/attachment.cgi?id=37432 Also accept older sizes, write correct amount of bytes only
The last version wasn't quite correct. There are smaller versions of D3DDEVICEDESC, the change as it was broke Need for Speed 3. Viper also passes in a smaller version, and expects us to write only the amount of bytes it specifies in the dwSize member, not the full DirectX 6 version of the structure.
http://bugs.winehq.org/show_bug.cgi?id=12829
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |directx-d3d
http://bugs.winehq.org/show_bug.cgi?id=12829
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |cc06d182fb433c7009dfb640b33 | |d4ecd27bbd4b6 Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #25 from Stefan Dösinger stefan@codeweavers.com 2011-12-05 16:57:31 CST --- This should be fixed by cc06d182fb433c7009dfb640b33d4ecd27bbd4b6
http://bugs.winehq.org/show_bug.cgi?id=12829
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #26 from Alexandre Julliard julliard@winehq.org 2011-12-16 13:30:23 CST --- Closing bugs fixed in 1.3.35.