https://bugs.winehq.org/show_bug.cgi?id=44954
Bug ID: 44954 Summary: Star Citizen fails to load dll Product: Wine-staging Version: 3.5 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: holzminister@t-online.de CC: erich.e.hoover@wine-staging.com, michael@fds-team.de, sebastian@fds-team.de Distribution: ---
This bug seems to be fixed with wine 3.1 https://bugs.winehq.org/show_bug.cgi?id=39319 But somehow I still get this bug when using wine-staging.
0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:err:module:import_dll Library icudt59.dll (which is needed by L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icuuc59.dll") not found 0034:err:module:import_dll Library icuuc59.dll (which is needed by L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\StarCitizen.exe") not found 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:fixme:module:find_dll_file skipping L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icudt59.dll" because of wrong architecture 0034:err:module:import_dll Library icudt59.dll (which is needed by L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icuuc59.dll") not found 0034:err:module:import_dll Library icuuc59.dll (which is needed by L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\icuin59.dll") not found 0034:err:module:import_dll Library icuin59.dll (which is needed by L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\StarCitizen.exe") not found 0034:err:module:attach_dlls Importing dlls for L"Z:\mnt\1\Spiele\Starcitizen\StarCitizen\LIVE\Bin64\StarCitizen.exe" failed, status c0000135
https://bugs.winehq.org/show_bug.cgi?id=44954
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=44954
Matthew matthew@digivation.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matthew@digivation.net
--- Comment #1 from Matthew matthew@digivation.net --- I can confirm I see this on wine-staging 3.7 but not wine 3.7.
https://bugs.winehq.org/show_bug.cgi?id=44954
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |leslie_alistair@hotmail.com
--- Comment #2 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Can you provide a log +shell,module,loaddll,seh
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #3 from Matthew matthew@digivation.net --- Created attachment 61349 --> https://bugs.winehq.org/attachment.cgi?id=61349 Wine-staging 3.7 StarCitizen Log
Attached is a log from wine-3.7 (Staging).
The same command succeeds with wine-3.7
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #4 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Thanks for the log
Can you run the command following. file icudt59.dll
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #5 from Matthew matthew@digivation.net --- (In reply to Alistair Leslie-Hughes from comment #4)
Thanks for the log
Can you run the command following. file icudt59.dll
[matthew@jupiter Bin64]$ file icudt59.dll icudt59.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #6 from Matthew matthew@digivation.net --- Per the comments on Bug #39319, this is a "32-bit resource-only dll loaded into a 64 bit process" (StarCitizen.exe: PE32+ executable (GUI) x86-64, for MS Windows).
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #7 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Created attachment 61356 --> https://bugs.winehq.org/attachment.cgi?id=61356 Check for resource only dll
Can you please try this patch? Apply a top a wine-staging tree.
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #8 from Matthew matthew@digivation.net --- (In reply to Alistair Leslie-Hughes from comment #7)
Created attachment 61356 [details] Check for resource only dll
Can you please try this patch? Apply a top a wine-staging tree.
I applied wine-staging patches to the latest wine-git, then applied your patch ... except patch complained that the 'patch was previously applied.'
I then did a clean clone, re-applied the patches, and verified that the is_resource_dll() function still exists in dlls/ntdll/loader.c
Finally, I did a wow64 build of the code, and observed the same error.
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #9 from Matthew matthew@digivation.net --- I noticed that the is_resource_dll() function does not exist in vanilla wine, and is introduced in the ntdll-Loader_Machine_Type patchset. I disabled that patch and it's dependent patches (./patches/patchinstall.sh DESTDIR=../wine-patch2 --all -W ntdll-Loader_Machine_Type -W ntdll-DllRedirects -W uxtheme-GTK_Theming -W ntdll-Purist_Mode) and rebuilt my wine-staging test.
The build without these patches successfully loaded the executable and 32bit resource dll files.
This leads me to believe that the ntdll-Loader_Machine_Type patchset causes the regression.
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #10 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- (In reply to Matthew from comment #9)
I noticed that the is_resource_dll() function does not exist in vanilla wine, and is introduced in the ntdll-Loader_Machine_Type patchset. I disabled that patch and it's dependent patches (./patches/patchinstall.sh DESTDIR=../wine-patch2 --all -W ntdll-Loader_Machine_Type -W ntdll-DllRedirects -W uxtheme-GTK_Theming -W ntdll-Purist_Mode) and rebuilt my wine-staging test.
The build without these patches successfully loaded the executable and 32bit resource dll files.
This leads me to believe that the ntdll-Loader_Machine_Type patchset causes the regression.
Yes that is the exact patchset that is causing the issue. However, since it is fixing another issue. We need to workout why it's failing.
However, not having Star Citizen, it's a bit of guess game.
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #11 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Hi Matthew
If you apply the staging patches, but change the function is_resource_dll to return !info.TransferAddress;
Does that fix the issue?
https://bugs.winehq.org/show_bug.cgi?id=44954
Toni tonix64@inventati.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tonix64@inventati.org
--- Comment #12 from Toni tonix64@inventati.org --- might be reproducible without the game on a fresh wineprefix:
using 3.7-staging, run wineboot, I can see at the end:
0009:fixme:module:find_dll_file skipping L"C:\windows\system32\advapi32.dll" because of wrong architecture 0009:fixme:module:find_dll_file skipping L"C:\windows\system32\advapi32.dll" because of wrong architecture
deleting the wineprefix and running wineboot with 3.7 instead I don't see that, also I don't see it with WINEARCH=win32 either in 3.7 or 3.7-staging
I think I've seen it with other applications when kickstarting the wineprefix with 3.x-staging (as far I tried 3.3-staging also does this, but 2.21-staging doesnt)
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #13 from Matthew matthew@digivation.net --- OK - I grabbed a fresh copy of wine from git (HEAD), applied the wine-staging patches to it (HEAD as well), then applied your patch; the code was already present, but I reapplied the patch. Verified dlls/ndtll/loader.c contained the is_resource() function. Then ./configure --enable-win64; make -j9
Unfortunately, running ./wine64 <path to my exe> still results in a failure...(In reply to Alistair Leslie-Hughes from comment #11)
Hi Matthew
If you apply the staging patches, but change the function is_resource_dll to return !info.TransferAddress;
Does that fix the issue?
That did indeed resolve the issue - now the DLLs load and the executable continues.
static BOOL is_resource_dll( HANDLE hfile ) { SECTION_IMAGE_INFORMATION info; SIZE_T ret;
if(NtQuerySection(hfile, SectionImageInformation, &info, sizeof(info), &ret) == STATUS_SUCCESS) return !info.ImageContainsCode;
return !info.ImageContainsCode; }
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #14 from Matthew matthew@digivation.net --- (In reply to Alistair Leslie-Hughes from comment #11)
Hi Matthew
If you apply the staging patches, but change the function is_resource_dll to return !info.TransferAddress;
Does that fix the issue?
Alistair, I misread your patch test request, and modified my is_resource_dll to return "!info.ImageContainsCode" instead of "!info.TransferAddress".
Applying the latest wine-staging patches to wine-3.8, containing your modification to the is_resource_dll function does not resolve the issue - I'm still failing to load the icu*.dll files.
When is_resource_dll is modified to return !info.ImageContainsCode, the load will succeed - but I'm not sure if that's a valid change, as I have not had time to research the NtQuerySection function.
Matthew
https://bugs.winehq.org/show_bug.cgi?id=44954
--- Comment #15 from Matthew matthew@digivation.net --- I added some debugging FIXME's to the is_resource_dll() function and observed a couple of things:
1) During load, NtQuerySection never returns STATUS_SUCCESS for any dlls passed via is_resource_dll. All status returns = 0xC0000024, which maps to "STATUS_OBJECT_TYPE_MISMATCH" thus for this case it seems the new return code is never run. All returns of the new patched function are thus "FALSE."
2) The 'info.ImageContainsCode' flag seems to work correctly.
Thanks, Matthew
https://bugs.winehq.org/show_bug.cgi?id=44954
Jason holzminister@t-online.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED
--- Comment #16 from Jason holzminister@t-online.de --- This is fixed for me with wine-staging 3.9 Thank you!
https://bugs.winehq.org/show_bug.cgi?id=44954
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #17 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing Fixed Staging 3.14