https://bugs.winehq.org/show_bug.cgi?id=42255
Bug ID: 42255 Summary: Xenia emulator needs ntdll.dll.RtlAddGrowableFunctionTable Product: Wine Version: 2.0-rc5 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: fjfrackiewicz@gmail.com Distribution: ---
Created attachment 56942 --> https://bugs.winehq.org/attachment.cgi?id=56942 Terminal output Wine 2.0-rc5
IF you attempt to run the Xenia emulator in a WoW64 prefix in Windows XP mode, the program crashes with the following error:
wine: Unimplemented function ntdll.dll.RtlAddGrowableFunctionTable called at address 0x7bc5f96c (thread 0026), starting debugger...
Steps to reproduce:
1. Download the emulator in the link I have provided 2. Make a WoW64 prefix (requires multilib Wine) 3. Run "winetricks vcrun2015" before running the program 4. Attempt to install the program with "wine xenia.exe"
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #1 from fjfrackiewicz@gmail.com --- Created attachment 56943 --> https://bugs.winehq.org/attachment.cgi?id=56943 Backtrace Wine 2.0-rc5
https://bugs.winehq.org/show_bug.cgi?id=42255
fjfrackiewicz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |https://github.com/benvanik | |/xenia/releases/download/xe | |nia-master-1.0.119/xenia-ma | |ster-558395c250c212c4b5a768 | |97370c78ef14fe6e33.zip
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #2 from fjfrackiewicz@gmail.com --- File info:
0f093926f6a749a596241da6ee359685 xenia-master-558395c250c212c4b5a76897370c78ef14fe6e33.zip
https://bugs.winehq.org/show_bug.cgi?id=42255
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=42255
fjfrackiewicz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |win64
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #3 from fjfrackiewicz@gmail.com --- More info about this function can be found here:
http://filelog.net/func/RtlAddGrowableFunctionTable
https://bugs.winehq.org/show_bug.cgi?id=42255
BieHDC byi5000@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |byi5000@gmail.com
--- Comment #4 from BieHDC byi5000@gmail.com --- Can confirm the missing function. https://msdn.microsoft.com/en-us/library/windows/desktop/hh405352(v=vs.85).a...
Download link to the program (it says jp, but its in english) http://xenia.jp/
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #5 from Austin English austinenglish@gmail.com --- Created attachment 59935 --> https://bugs.winehq.org/attachment.cgi?id=59935 stub
Does this help?
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #6 from BieHDC byi5000@gmail.com --- Created attachment 59940 --> https://bugs.winehq.org/attachment.cgi?id=59940 wine log of xenia
No it does not resolve the issue. The window just quickly pops up and closes silently (no message box appears)
applied patches were yours and louis' patch from here https://bugs.winehq.org/show_bug.cgi?id=44035
https://bugs.winehq.org/show_bug.cgi?id=42255
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Xenia emulator needs |Xenia emulator needs |ntdll.dll.RtlAddGrowableFun |ntdll.dll.RtlAddGrowableFun |ctionTable |ctionTable implementation
--- Comment #7 from Austin English austinenglish@gmail.com --- (In reply to BieHDC from comment #6)
Created attachment 59940 [details] wine log of xenia
No it does not resolve the issue. The window just quickly pops up and closes silently (no message box appears)
applied patches were yours and louis' patch from here https://bugs.winehq.org/show_bug.cgi?id=44035
Thanks for testing. Presumably it needs a real implemention.
https://bugs.winehq.org/show_bug.cgi?id=42255
Chris chridye@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |chridye@gmail.com
--- Comment #8 from Chris chridye@gmail.com --- Created attachment 62686 --> https://bugs.winehq.org/attachment.cgi?id=62686 more recent crash report from xenia
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #9 from Chris chridye@gmail.com --- Didn't realize the comment would show up with that crash report being uploaded. Xenia is still in need of this instruction. It would be nice to have Xenia working under wine since the d3d12 branch is working much better than the vulkan branch right now.
https://bugs.winehq.org/show_bug.cgi?id=42255
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |focht@gmx.net Ever confirmed|0 |1 Keywords| |source
--- Comment #10 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming and behalf of OP.
I found the corresponding source on Github:
https://github.com/xenia-project/xenia/blob/master/src/xenia/cpu/backend/x64...
--- snip --- bool Win32X64CodeCache::Initialize() { if (!X64CodeCache::Initialize()) { return false; }
// Compute total number of unwind entries we should allocate. // We don't support reallocing right now, so this should be high. unwind_table_.resize(kMaximumFunctionCount);
#ifdef USE_GROWABLE_FUNCTION_TABLE // Create table and register with the system. It's empty now, but we'll grow // it as functions are added. if (RtlAddGrowableFunctionTable( &unwind_table_handle_, unwind_table_.data(), unwind_table_count_, DWORD(unwind_table_.size()), reinterpret_cast<ULONG_PTR>(generated_code_base_), reinterpret_cast<ULONG_PTR>(generated_code_base_ + kGeneratedCodeSize))) { XELOGE("Unable to create unwind function table"); return false; } #else // Install a callback that the debugger will use to lookup unwind info on // demand. if (!RtlInstallFunctionTableCallback( reinterpret_cast<DWORD64>(generated_code_base_) | 0x3, reinterpret_cast<DWORD64>(generated_code_base_), kGeneratedCodeSize, [](uintptr_t control_pc, void* context) { auto code_cache = reinterpret_cast<X64CodeCache*>(context); return reinterpret_cast<PRUNTIME_FUNCTION>( code_cache->LookupUnwindEntry(control_pc)); }, this, nullptr)) { XELOGE("Unable to install function table callback"); return false; } #endif // USE_GROWABLE_FUNCTION_TABLE
return true; } --- snip ---
Regards
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #11 from Austin English austinenglish@gmail.com --- Well luckily Microsoft has finally documented it: https://docs.microsoft.com/en-us/windows/desktop/api/winnt/nf-winnt-rtladdgr...
I took 5 minutes to try to add a stub, but seeing a weird compiler error; will try to look more later.
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #12 from Austin English austinenglish@gmail.com --- (In reply to Austin English from comment #11)
Well luckily Microsoft has finally documented it: https://docs.microsoft.com/en-us/windows/desktop/api/winnt/nf-winnt- rtladdgrowablefunctiontable
I took 5 minutes to try to add a stub, but seeing a weird compiler error; will try to look more later.
Dumbness solved. Returning STATUS_NOT_IMPLEMENTED fails. If I return STATUS_SUCCESS instead, it gets further, then needs ntdll.dll.RtlGrowFunctionTable.
Bedtime now though.
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #13 from Chris chridye@gmail.com --- Was that change merged into the development branch?
https://bugs.winehq.org/show_bug.cgi?id=42255
--- Comment #14 from Anastasius Focht focht@gmx.net --- Hello Chris,
--- quote --- Was that change merged into the development branch? --- quote ---
obviously not otherwise you would see further activity here (comments, status changes etc.). It sometimes takes weeks, months or in exceptional cases several years until code gets merged in mainline ;-)
You can watch the mailing list by yourself:
https://www.winehq.org/pipermail/wine-devel
or even have a look at the source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/ntdll.spec
(search for the missing API function entries)
Regards
https://bugs.winehq.org/show_bug.cgi?id=42255
Louis Lenders xerox.xerox2000x@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox.xerox2000x@gmail.com
--- Comment #15 from Louis Lenders xerox.xerox2000x@gmail.com --- (In reply to Anastasius Focht from comment #14)
Hello Chris,
. It sometimes takes weeks, months or in exceptional
cases several years until code gets merged in mainline ;-)
I`ve sent Staging guys mail with request to include patch in Staging. Looks like Alex already tested the patch long time ago https://github.com/alexhenrie/wine/commit/2149d8fdc33ed093bec4c8d1129e47d7af... so maybe there might be some progress hopefully
https://bugs.winehq.org/show_bug.cgi?id=42255
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |leslie_alistair@hotmail.com Status|NEW |STAGED Staged patchset| |https://github.com/wine-sta | |ging/wine-staging/tree/mast | |er/patches/ntdll-RtlAddGrow | |ableFunctionTable
https://bugs.winehq.org/show_bug.cgi?id=42255
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |80991720def8d597332bcd61fcb | |49c00f0feaa21 Status|STAGED |RESOLVED CC| |alexhenrie24@gmail.com Resolution|--- |FIXED
--- Comment #16 from Alex Henrie alexhenrie24@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commitdiff/80991720def8d597332bcd61fc...
https://bugs.winehq.org/show_bug.cgi?id=42255
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #17 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 4.0-rc1.