https://bugs.winehq.org/show_bug.cgi?id=39718
--- Comment #30 from swswine@gmail.com --- (In reply to mactrix from comment #29)
Yes it seems. In this case the issue would also occur on native Steam versions under Windows. So far I don't have confirmation this is the case.
Your tweak d3d9.dll tricks the game by proxying IDirect3D9 interface and GetAdapterIdentifier method. In the game's point of view the effect is exactly the same as what happens when Wine tricks the game in it's method implementation (that's what we got through registry overload). Your crash log shows the crash in a different interface not related to Direct3D at all (it is in IDirectInput device). This means that there is most likely some memory corruption happens before the crash. Your custom d3d9 most likely has some bug in interface proxying (inaccurate reference counting/freeing of the interface). Such sort of bug may be invisible forever or may be triggered by some changes in the interface usage or implementation, or just happen randomly. Confirming whether it still works under Windows will really give you nothing. It may work, or crash, or crash sometimes, or crash on some slightly different configuration, or even begin to crash on some different computer with the same configuration. This is not related to Wine. It is practically not possible to fully simulate Windows environment in such aspects, it would mean copying it completely. There are only two ways to go: - a good one: use registry tweak (or ask Wine developers if they want to make this d3d configuration setting available per application through environment variables); - a bad one: rewrite tweak dll without the bug and test it. The last one is really ugly if to talk about port using Wine: you already have an open source dll to tweak in wine and whatever you want to do in this sense is easier and more reliable to do there, even if to hardcode card info right into GetAdapterIdentifier as your tweak dll does.