https://bugs.winehq.org/show_bug.cgi?id=50105
Bug ID: 50105 Summary: New Vegas Heap Replacer requires unimplemented d3d9 function D3DXMatrixMultiply Product: Wine Version: 5.0.2 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: katisntgood@gmail.com Distribution: ---
Created attachment 68596 --> https://bugs.winehq.org/attachment.cgi?id=68596 Crash report
New Vegas Heap Replacer, a heap replacement for Fallout: New Vegas in the form of a modified d3d9_38.dll uses D3DXMatrixMultiply which is unimplemented in Wine (the version used by Proton, but this isn't a problem related to that)
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- It is implemented in Wine. Does modified d3dx9_38.dll export it? Please attach +loaddll log too.
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #2 from Kat katisntgood@gmail.com --- Created attachment 68597 --> https://bugs.winehq.org/attachment.cgi?id=68597 loaddll log
Couldn't get fixme errors to go away
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #3 from Kat katisntgood@gmail.com --- Also I'm not sure what you mean by export it
https://bugs.winehq.org/show_bug.cgi?id=50105
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #4 from Zebediah Figura z.figura12@gmail.com --- Created attachment 68598 --> https://bugs.winehq.org/attachment.cgi?id=68598 ntdll: Use a dynamically allocated buffer in find_forwarded_export() if necessary.
Wine's d3dx9_38 implements D3DXMatrixMultiply(), so that's not the problem. The actual problem is that Wine fails to resolve a rather creative forwarder export to "C:\Windows\System32\d3dx9_38.D3DXMatrixMultiply" because the name is too long. The attached patch should fix that.
https://bugs.winehq.org/show_bug.cgi?id=50105
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|New Vegas Heap Replacer |New Vegas Heap Replacer |requires unimplemented d3d9 |crashes with "Call from |function D3DXMatrixMultiply |0x7bc91c09 to unimplemented | |function | |d3dx9_38.dll.D3DXMatrixMult | |iply" Component|directx-d3d |ntdll Keywords| |patch
https://bugs.winehq.org/show_bug.cgi?id=50105
Olivier F. R. Dierick o.dierick@piezo-forte.be changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |o.dierick@piezo-forte.be
--- Comment #5 from Olivier F. R. Dierick o.dierick@piezo-forte.be --- (In reply to Zebediah Figura from comment #4)
Created attachment 68598 [details] ntdll: Use a dynamically allocated buffer in find_forwarded_export() if necessary.
Hello,
Isn't there an issue with unconditionally freeing mod_name?
When buffer is large enough the condition on line 616 will be false and mod_name will still point to buffer.
I think lines 646 & 669 should read:
if (mod_name != buffer) RtlFreeHeap( GetProcessHeap(), 0, mod_name );
Regards.
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #6 from Kat katisntgood@gmail.com --- Took me a while to actually build (building Proton is weird), and I also can't seem to test any other version of wine, but the patch might have worked. It can launch fine and NVHR doesn't seem to crash anymore (it does get loaded)
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #7 from Zebediah Figura z.figura12@gmail.com --- (In reply to Olivier F. R. Dierick from comment #5)
(In reply to Zebediah Figura from comment #4)
Created attachment 68598 [details] ntdll: Use a dynamically allocated buffer in find_forwarded_export() if necessary.
Hello,
Isn't there an issue with unconditionally freeing mod_name?
When buffer is large enough the condition on line 616 will be false and mod_name will still point to buffer.
I think lines 646 & 669 should read:
if (mod_name != buffer) RtlFreeHeap( GetProcessHeap(), 0, mod_name );
Regards.
Yes, that was a mistake, thanks for catching it.
https://bugs.winehq.org/show_bug.cgi?id=50105
--- Comment #8 from Kat katisntgood@gmail.com --- Do you mind making a patch with that coding fix? I don't know how to do it myself
https://bugs.winehq.org/show_bug.cgi?id=50105
Olivier F. R. Dierick o.dierick@piezo-forte.be changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #68598|0 |1 is obsolete| |
--- Comment #9 from Olivier F. R. Dierick o.dierick@piezo-forte.be --- Created attachment 68599 --> https://bugs.winehq.org/attachment.cgi?id=68599 ntdll: Use a dynamically allocated buffer in find_forwarded_export() if necessary.
(In reply to Kat from comment #8)
Do you mind making a patch with that coding fix? I don't know how to do it myself
Hello,
Here is an updated patch.
Regards.
https://bugs.winehq.org/show_bug.cgi?id=50105
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |74ec9773dd3892f34003811cdee | |7da3e47a550c8 Status|UNCONFIRMED |RESOLVED
--- Comment #10 from Zebediah Figura z.figura12@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commitdiff/74ec9773dd3892f34003811cdee7da3e47a550c8.
https://bugs.winehq.org/show_bug.cgi?id=50105
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #11 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.0-rc1.