[Bug 51465] New: EVE Online Launcher Crashes Due to Missing syscalls in Windows Credential Manager
https://bugs.winehq.org/show_bug.cgi?id=51465 Bug ID: 51465 Summary: EVE Online Launcher Crashes Due to Missing syscalls in Windows Credential Manager Product: Wine Version: 6.12 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs(a)winehq.org Reporter: algebro(a)tuta.io Distribution: --- Created attachment 70306 --> https://bugs.winehq.org/attachment.cgi?id=70306 Crash on authentication As of version 1917874 of the EVE Online launcher, the application crashes when trying to log in. According to the developers, they moved to a new credential management solution (involving https://github.com/frankosterfeld/qtkeychain and the Windows Credential Store), and they said that Wine currently doesn't implement the needed syscalls for this to function. I've attached a stacktrace which looks like it crashes somewhere in cryptopp, but I haven't been able to figure out much by debugging (winedbg doesn't see any of those function addresses as valid, and I haven't been able to map them to functions in a disassembler). Let me know if I can provide any more information that would be helpful. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #1 from algebro(a)tuta.io --- Relevant comment from the developers: https://forums.eveonline.com/t/new-launcher-new-linux-error/319782/104 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 info(a)ppfeufer.de changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |info(a)ppfeufer.de -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Kim Malmo <berencamlost(a)msn.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |berencamlost(a)msn.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Anton Vorobyov <phoenix(a)mail.ru> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |phoenix(a)mail.ru --- Comment #2 from Anton Vorobyov <phoenix(a)mail.ru> --- Can confirm that I am also affected by this issue. There are possible workarounds for now, but in the long run Wine needs to support those APIs in order to be able to launch EVE online. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Kuran <stannum.k(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |stannum.k(a)gmail.com --- Comment #3 from Kuran <stannum.k(a)gmail.com> --- Confirm this bug. Also informing that AppDB application is not specified but as mentioned in bug description this is: EVE Online - https://appdb.winehq.org/objectManager.php?sClass=application&iId=2249 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #4 from algebro(a)tuta.io --- I've been doing more debugging, and there seem to be a couple of issues going on (all are happening in cryptopp so far). If we figure out it's some sort of cryptopp bug then I'll close this ticket and report it there, but at least one of the problems seems to be something with allocation, which could be wine related. Issue #1: the game crashes at https://github.com/weidai11/cryptopp/blob/2d8e4680855691657cb8029ae5cb05c67c... after checking the result value of a FIPS self-test. From what I can tell, DoPowerUpSelfTest() in fipstest.cpp is never called to run the tests, so this fails and it throws an exception. Just as a test case, I patched the cryptopp.dll that shipped with the launcher to remove that check and it gets past it just fine. Issue #2: We're crashing in SetNewAndDeleteFunctionPointers() in dll.cpp (https://github.com/weidai11/cryptopp/blob/2d8e4680855691657cb8029ae5cb05c67c...). For some reason GetModuleHandle("msvcrtd") or GetModuleHandle("msvcrt") are failing. Anyone know what could cause that? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Zebediah Figura <z.figura12(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|EVE Online Launcher Crashes |EVE Online launcher crashes |Due to Missing syscalls in | |Windows Credential Manager | CC| |z.figura12(a)gmail.com --- Comment #5 from Zebediah Figura <z.figura12(a)gmail.com> --- "syscalls" does not mean what that employee thinks it means. Anyway: (In reply to algebro from comment #4)
Issue #2:
We're crashing in SetNewAndDeleteFunctionPointers() in dll.cpp (https://github.com/weidai11/cryptopp/blob/ 2d8e4680855691657cb8029ae5cb05c67c6dc654/dll.cpp#L121). For some reason GetModuleHandle("msvcrtd") or GetModuleHandle("msvcrt") are failing. Anyone know what could cause that?
Sounds kind of like bug 27827; the application is expecting msvcrt to already be loaded as a dependency of some system DLL. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #6 from algebro(a)tuta.io ---
Sounds kind of like bug 27827; the application is expecting msvcrt to already be loaded as a dependency of some system DLL.
Thanks! Is there a way to load it with winedbg just to verify? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #7 from algebro(a)tuta.io --- Actually, it looks like msvcrt should already be loaded (I got this when launching the program with WINEDEBUG=+loaddl: 0048:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\msvcrt.dll" at 00000001C8DB0000: builtin -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #8 from algebro(a)tuta.io --- Nevermind, `info shared` says msvcrt and msvcrtd aren't loaded when GetModuleHandleA() is called. Is there anything that can be done about this on the Wine side of things? Or is this a cryptopp issue? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #9 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #8)
Nevermind, `info shared` says msvcrt and msvcrtd aren't loaded when GetModuleHandleA() is called. Is there anything that can be done about this on the Wine side of things? Or is this a cryptopp issue?
Well, there is; we should probably be linking to msvcrt in our system DLLs (i.e. 14d97456a was wrong). But it's also kind of an application bug; they're relying on undocumented behaviour. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #10 from algebro(a)tuta.io --- Are there major implications if we were to link to msvcrt? Does that conflict with ucrt or would it be likely to break things? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #11 from algebro(a)tuta.io --- I just found this in the cryptopp readme: ``` *** DLL Memory Management *** Because it's possible for the Crypto++ DLL to delete objects allocated by the calling application, they must use the same C++ memory heap. Three methods are provided to achieve this. 1. The calling application can tell Crypto++ what heap to use. This method is required when the calling application uses a non-standard heap. 2. Crypto++ can tell the calling application what heap to use. This method is required when the calling application uses a statically linked C++ Run Time Library. (Method 1 does not work in this case because the Crypto++ DLL is initialized before the calling application's heap is initialized.) 3. Crypto++ can automatically use the heap provided by the calling application's dynamically linked C++ Run Time Library. The calling application must make sure that the dynamically linked C++ Run Time Library is initialized before Crypto++ is loaded. (At this time it is not clear if it is possible to control the order in which DLLs are initialized on Windows 9x machines, so it might be best to avoid using this method.) When Crypto++ attaches to a new process, it searches all modules loaded into the process space for exported functions "GetNewAndDeleteForCryptoPP" and "SetNewAndDeleteFromCryptoPP". If one of these functions is found, Crypto++ uses methods 1 or 2, respectively, by calling the function. Otherwise, method 3 is used. ``` I'm guessing we're hitting case 3, and cryptopp doesn't bother to look for ucrt? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Kevin Andrews <kjandrews0(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kjandrews0(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Stefan Reimer <it(a)stefanreimer.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |it(a)stefanreimer.de --- Comment #12 from Stefan Reimer <it(a)stefanreimer.de> --- Confirm this bug. Wine 6.9 on Gentoo. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #13 from info(a)ppfeufer.de --- Confirmed on wine 6.12 on Gentoo -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Andreas Zuber <a.zuber(a)gmx.ch> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |a.zuber(a)gmx.ch -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #14 from algebro(a)tuta.io --- I just added a small hacky patch to cryptopp to manually load msvcrt.dll as follows: hModule = GetModuleHandle("msvcrtd"); if (!hModule) hModule = GetModuleHandle("msvcrt"); if (!hModule) hModule = LoadLibrary("msvcrt.dll"); After recompiling cryptopp.dll and replacing the one that ships with the EVE Windows launcher, it works fine on Wine 6.12. So it looks like Zebediah was spot on. @Zebediah, should we do anything about this on the Wine side (like look at linking against msvcrt), or just patch this upstream in cryptopp to have it load the library if it's not present? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #15 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #14)
I just added a small hacky patch to cryptopp to manually load msvcrt.dll as follows:
hModule = GetModuleHandle("msvcrtd"); if (!hModule) hModule = GetModuleHandle("msvcrt"); if (!hModule) hModule = LoadLibrary("msvcrt.dll");
After recompiling cryptopp.dll and replacing the one that ships with the EVE Windows launcher, it works fine on Wine 6.12. So it looks like Zebediah was spot on.
@Zebediah, should we do anything about this on the Wine side (like look at linking against msvcrt), or just patch this upstream in cryptopp to have it load the library if it's not present?
Conceptually it'd be nice for cryptopp to fix the bug themselves, yes. (Note that you probably want to always use LoadLibrary instead of trying GetModuleHandle first.) That said, we may need to fix it in Wine anyway, for other applications. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #16 from algebro(a)tuta.io --- Would you have any guidance on how to fix it in wine? I'd be happy to try and contribute a patch, although when I was looking through the source code I was having trouble figuring out what exactly I would need to do without breaking everything. No worries if you'd rather handle it internally though! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #17 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #16)
Would you have any guidance on how to fix it in wine? I'd be happy to try and contribute a patch, although when I was looking through the source code I was having trouble figuring out what exactly I would need to do without breaking everything. No worries if you'd rather handle it internally though!
Something like the following (untested!) diff should do it: diff --git a/tools/makedep.c b/tools/makedep.c index db076d0c057..9c21ca40d73 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -2292,7 +2292,7 @@ static void add_crt_import( const struct makefile *make, struct strarray *import } else { - crt_dll = !make->testdll && !make->staticlib ? "ucrtbase" : "msvcrt"; + crt_dll = "msvcrt"; strarray_add( imports, crt_dll ); } } Then it'd be a matter of trying to compile it, fixing any instances where we rely on newer CRT features, and then doing the same thing with the tests. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #18 from algebro(a)tuta.io ---
Then it'd be a matter of trying to compile it, fixing any instances where we rely on newer CRT features, and then doing the same thing with the tests.
Thanks a lot for your help! We're going to give this a try (I've also submitted a patch to cryptopp for now). Does linking to msvcrt like this conflict with the previous work with ucrt? Or does it just supplement it by loading msvcrt when needed? I want to make sure I understand all of the implications/impact before proposing a major change (although I guess technically you proposed it) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #19 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #18)
Then it'd be a matter of trying to compile it, fixing any instances where we rely on newer CRT features, and then doing the same thing with the tests.
Thanks a lot for your help! We're going to give this a try (I've also submitted a patch to cryptopp for now). Does linking to msvcrt like this conflict with the previous work with ucrt? Or does it just supplement it by loading msvcrt when needed? I want to make sure I understand all of the implications/impact before proposing a major change (although I guess technically you proposed it)
I don't quite recall what the motivations for switching to ucrtbase were, but I suspect they were along the lines of "ucrtbase is newer and therefore objectively better". Which is true, but unfortunately it seems like we still need to use msvcrt... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #20 from algebro(a)tuta.io ---
I don't quite recall what the motivations for switching to ucrtbase were, but I suspect they were along the lines of "ucrtbase is newer and therefore objectively better". Which is true, but unfortunately it seems like we still need to use msvcrt...
Do you have any idea as to how open the other maintainers would be to a rollback like this? I'm working out some linker errors with that patch now but I didn't want to waste people's time if they're uncomfortable going back to a deprecated runtime -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #21 from algebro(a)tuta.io --- Getting a linker error related to `__imp_lrintf` in `dsound_convert` when the patch is applied, not sure if it's an issue with my environment or something else: /usr/lib/gcc/x86_64-w64-mingw32/11.1.0/../../../../x86_64-w64-mingw32/bin/ld: dlls/dsound/dsound_convert.cross.o: in function `f_to_8': /home/algebro/Documents/wine/trunk/src/wine-64-build/../wine/dlls/dsound/dsound_convert.c:121: undefined reference to `__imp_lrintf' /usr/lib/gcc/x86_64-w64-mingw32/11.1.0/../../../../x86_64-w64-mingw32/bin/ld: dlls/dsound/dsound_convert.cross.o: in function `f_to_16': /home/algebro/Documents/wine/trunk/src/wine-64-build/../wine/dlls/dsound/dsound_convert.c:130: undefined reference to `__imp_lrintf' /usr/lib/gcc/x86_64-w64-mingw32/11.1.0/../../../../x86_64-w64-mingw32/bin/ld: dlls/dsound/dsound_convert.cross.o: in function `f_to_24': /home/algebro/Documents/wine/trunk/src/wine-64-build/../wine/dlls/dsound/dsound_convert.c:139: undefined reference to `__imp_lrintf' /usr/lib/gcc/x86_64-w64-mingw32/11.1.0/../../../../x86_64-w64-mingw32/bin/ld: dlls/dsound/dsound_convert.cross.o: in function `f_to_32': /home/algebro/Documents/wine/trunk/src/wine-64-build/../wine/dlls/dsound/dsound_convert.c:148: undefined reference to `__imp_lrintf' -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #22 from algebro(a)tuta.io --- I'm a little confused because if I'm reading makedep.c correctly, the -mno-cygwin flag should automatically have this being built with msvcrt anyway: make->use_msvcrt = strarray_exists( &make->extradllflags, "-mno-cygwin" ); When switching to ucrt with d0bf94, the `mno-cygwin` flag remained and they just added ucrtbase to the imports, and later removed ucrtbase in af12270. Was there some other change related to ucrt that would mess up the linking here? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Zebediah Figura <z.figura12(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek(a)codeweavers.com --- Comment #23 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #20)
I don't quite recall what the motivations for switching to ucrtbase were, but I suspect they were along the lines of "ucrtbase is newer and therefore objectively better". Which is true, but unfortunately it seems like we still need to use msvcrt...
Do you have any idea as to how open the other maintainers would be to a rollback like this? I'm working out some linker errors with that patch now but I didn't want to waste people's time if they're uncomfortable going back to a deprecated runtime
I don't really, no. I should probably have already added Jacek to CC already. Jacek, do you have thoughts on this? Are there reasons for the switch to ucrtbase that I missed or forgot? (In reply to algebro from comment #22)
I'm a little confused because if I'm reading makedep.c correctly, the -mno-cygwin flag should automatically have this being built with msvcrt anyway:
make->use_msvcrt = strarray_exists( &make->extradllflags, "-mno-cygwin" );
When switching to ucrt with d0bf94, the `mno-cygwin` flag remained and they just added ucrtbase to the imports, and later removed ucrtbase in af12270. Was there some other change related to ucrt that would mess up the linking here?
"use_msvcrt" is meant here as in contrast to glibc. As far as that naming is concerned, ucrtbase is another version of msvcrt (specifically version 140). lrintf() is a function exported by ucrtbase but not msvcrt. As such we'd need to import ucrtbase in dsound (or find some substitute for lrintf). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #24 from algebro(a)tuta.io ---
"use_msvcrt" is meant here as in contrast to glibc. As far as that naming is concerned, ucrtbase is another version of msvcrt (specifically version 140).
Ah thanks, that makes sense! I think this patch might also be required, but still testing: --- tools/winegcc/winegcc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index 8c1e0d088ac..a8235834ed1 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -1267,7 +1267,7 @@ static void build(struct options* opts) if (strncmp( output_name, "msvcr", 5 ) && strncmp( output_name, "ucrt", 4 ) && strcmp( output_name, "crtdll.dll" )) - add_library(opts, lib_dirs, files, "ucrtbase"); + add_library(opts, lib_dirs, files, "msvcrt"); } else strarray_add(files, strmake("-a%s", crt_lib)); } -- 2.32.0 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #25 from Zebediah Figura <z.figura12(a)gmail.com> --- (In reply to algebro from comment #24)
"use_msvcrt" is meant here as in contrast to glibc. As far as that naming is concerned, ucrtbase is another version of msvcrt (specifically version 140).
Ah thanks, that makes sense! I think this patch might also be required, but still testing:
--- tools/winegcc/winegcc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index 8c1e0d088ac..a8235834ed1 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -1267,7 +1267,7 @@ static void build(struct options* opts) if (strncmp( output_name, "msvcr", 5 ) && strncmp( output_name, "ucrt", 4 ) && strcmp( output_name, "crtdll.dll" )) - add_library(opts, lib_dirs, files, "ucrtbase"); + add_library(opts, lib_dirs, files, "msvcrt"); } else strarray_add(files, strmake("-a%s", crt_lib)); } -- 2.32.0
It's not required; it actually specifies the default for any libraries compiled with winegcc, but we are already specifying the CRT library explicitly via makedep (even for modules currently compiled with ucrtbase). I think it makes sense for winelib software to use ucrtbase by default, in which case we don't want the above hunk. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #26 from algebro(a)tuta.io --- (In reply to Zebediah Figura from comment #25)
It's not required; it actually specifies the default for any libraries compiled with winegcc, but we are already specifying the CRT library explicitly via makedep (even for modules currently compiled with ucrtbase). I think it makes sense for winelib software to use ucrtbase by default, in which case we don't want the above hunk.
Great, thanks. Importing ucrtbase in dsound got past that, now it's a matter of adding it to the other DLLs that need it (d3dx9_29.dll looks like it needs it next). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #27 from algebro(a)tuta.io --- Got it compiling, had to add ucrtbase back to a bunch of the DLLs (basically reverting af12270). I'll test it with EVE tomorrow and start looking into how to do the conformance tests, and what work needs done to update them. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #28 from Jacek Caban <jacek(a)codeweavers.com> --- Created attachment 70331 --> https://bugs.winehq.org/attachment.cgi?id=70331 fix It's not clear to me that linking to msvcrt.dll would make things much better. We would then be possibly missing ucrtbase.dll being loaded. On Windows, ucrtbase.dll ends up being used in quite some cases and I think that usually both msvcrt.dll and ucrtbase.dll end up being loaded. For a relatively high level testing, I used a simple test like this: #include <windows.h> #include <stdio.h> int main(int argc, char **argv) { LoadLibraryA(argc > 1 ? argv[1] : "user32.dll"); printf("%p %p\n", GetModuleHandleW(L"msvcrt.dll"), GetModuleHandleW(L"ucrtbase.dll")); return 0; } For the test to make sense, it needs to be compiled with some other msvcrt version than tested ones. It's not possible with GCC mingw, so I used llvm-mingw with a command (I will attach the executable for convenience): x86_64-w64-mingw32-gcc deptest.c -lmsvcr100 -o deptest64.exe If you try it with DLLs like gdi32.dll or user32.dll, only ucrtbsae.dll is loaded on Windows 10. If you try it with advapi32.dll, only msvcrt.dll is loaded. Thus, higher level DLLs pull both of them. That said, is the attached patch enough to get the game running? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #29 from Jacek Caban <jacek(a)codeweavers.com> --- Created attachment 70332 --> https://bugs.winehq.org/attachment.cgi?id=70332 deptest64.exe A build of the test from previous comment. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #30 from Kevin Andrews <kjandrews0(a)gmail.com> --- Created attachment 70335 --> https://bugs.winehq.org/attachment.cgi?id=70335 make output Compiling with just the following change: IMPORTS = kernelbase sechost msvcrt Gives the attached output when compiling the 64bit build ready for including into the 32bit build which passes afterwards but fails to run anything. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #31 from Jacek Caban <jacek(a)codeweavers.com> --- You probably need to clean dlls/advapi32 directory so that it's rebuilt with proper defines. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #32 from Kevin Andrews <kjandrews0(a)gmail.com> --- That was from a fresh clone (local history): git clone git://source.winehq.org/git/wine.git wine64 git clone git://source.winehq.org/git/wine.git wine32 cd wine64 git checkout wine-6.13 patch dlls/advapi32/Makefile.in CC="ccache gcc" ./configure --enable-win64 make -j 12 cd ../wine32 git checkout wine-6.13 patch dlls/advapi32/Makefile.in CC="ccache gcc -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig/ ./configure --with-wine64=../wine64 make -j 12 Errors with the previous attachment, is there something i need to clean / do before make? leaving this out on the 64bit build enables both to compile but the EVE Online launcher freezes just after opening. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #33 from algebro(a)tuta.io --- The game is launching fine for me with that patch on Arch Linux. Not sure how to fix your build as I've just adapted the Arch package to apply the patch -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #34 from Jacek Caban <jacek(a)codeweavers.com> --- If you previously used those sources to build Wine, then you need to do something like: make dlls/advapi32/clean -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #35 from Kevin Andrews <kjandrews0(a)gmail.com> --- I completely removed the previous builds and followed those commands exactly in my last comment, i'll try the clean command next and see if the 64bit will build, might have something to do with ccache on my configure command. Building with the patch only applied to wine32 seems to have worked, restarted the launcher again and it's working (launcher version 1920522). Three clients all launching and logging into the actual game to stations. Not 100% sure why vanilla wine isn't building with that change on 64bit on my machine, i'll take more of a look at it later. Was just about to pull the wine PKGBUILD for arch and add to the patch files, looks like you got there first! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #36 from Kevin Andrews <kjandrews0(a)gmail.com> --- Sorry for the spam, yes issue was between seat and keyboard one of: make dlls/advapi32/clean ccache -C Fixed the 64bit build and included inside a rebuilt 32bit runs fine. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Jacek Caban <jacek(a)codeweavers.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #37 from Jacek Caban <jacek(a)codeweavers.com> --- Thanks for testing and the report. I sent a patch: https://source.winehq.org/patches/data/209969 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #38 from algebro(a)tuta.io --- (In reply to Jacek Caban from comment #37)
Thanks for testing and the report. I sent a patch:
Thanks so much for your help Jacek and Zebediah! We really appreciate it! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #39 from ppfeufer <info(a)ppfeufer.de> --- Can confirm, patch is working on Gentoo with wine 6.12 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #40 from ppfeufer <info(a)ppfeufer.de> --- (In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #41 from algebro(a)tuta.io --- (In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #42 from ppfeufer <info(a)ppfeufer.de> --- (In reply to algebro from comment #41)
(In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was
I am in windowed mode. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #43 from Kevin Andrews <kjandrews0(a)gmail.com> --- Finished building straight from winehq git and arch linux wine-staging PKGBUILD, both version 6.13, with the patch applied (https://github.com/Caffe1neAdd1ct/arch-wine-staging-pkgbuild) both working fine :) Thanks very much to all involved! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #44 from Kevin Andrews <kjandrews0(a)gmail.com> --- (In reply to ppfeufer from comment #42)
(In reply to algebro from comment #41)
(In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was
I am in windowed mode.
I just tested 3 clients launched from the same launcher, tested in both fixed window and windowed modes, launcher remains responsive for me... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #45 from ppfeufer <info(a)ppfeufer.de> --- (In reply to Kevin Andrews from comment #44)
(In reply to ppfeufer from comment #42)
(In reply to algebro from comment #41)
(In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was
I am in windowed mode.
I just tested 3 clients launched from the same launcher, tested in both fixed window and windowed modes, launcher remains responsive for me...
Been playing around a bit more. When I have the client on a different monitor, it's all fine and everything keeps responsive. So it might be an entirely different issue I am facing here. Maybe something with KDE not refreshing windows in background or something like that. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #46 from Kevin Andrews <kjandrews0(a)gmail.com> --- (In reply to ppfeufer from comment #45)
(In reply to Kevin Andrews from comment #44)
(In reply to ppfeufer from comment #42)
(In reply to algebro from comment #41)
(In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39)
Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was
I am in windowed mode.
I just tested 3 clients launched from the same launcher, tested in both fixed window and windowed modes, launcher remains responsive for me...
Been playing around a bit more. When I have the client on a different monitor, it's all fine and everything keeps responsive. So it might be an entirely different issue I am facing here. Maybe something with KDE not refreshing windows in background or something like that.
Highly probable to be a different issue, i have to use libstrangle to limit down the FPS on nvidia prime sync with Gnome otherwise i get massive freezing when switching windows with vsync enabled in the clients... Apparently nvidia driver has fixed the issue, freezing is "better" but not playable with 3 clients... I'd recommend trying out a workspace switching solution with fixed windows and shortcuts if you're on one monitor, multiple monitors i'm not sure what to suggest.. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 --- Comment #47 from ppfeufer <info(a)ppfeufer.de> --- (In reply to Kevin Andrews from comment #46)
(In reply to ppfeufer from comment #45)
(In reply to Kevin Andrews from comment #44)
(In reply to ppfeufer from comment #42)
(In reply to algebro from comment #41)
(In reply to ppfeufer from comment #40)
(In reply to ppfeufer from comment #39) > Can confirm, patch is working on Gentoo with wine 6.12
Although, as long as the game client is open, the launcher is unresponsive. The client needs to be minimized for the launcher to become responsive again.
It seems to be working fine with Wine-Staging 6.12 on Arch for me in Windowed mode. Fullscreen mode has always been a little wonky for me (whenever I switch window focus it minimizes the game), but I just assumed that's how it was
I am in windowed mode.
I just tested 3 clients launched from the same launcher, tested in both fixed window and windowed modes, launcher remains responsive for me...
Been playing around a bit more. When I have the client on a different monitor, it's all fine and everything keeps responsive. So it might be an entirely different issue I am facing here. Maybe something with KDE not refreshing windows in background or something like that.
Highly probable to be a different issue, i have to use libstrangle to limit down the FPS on nvidia prime sync with Gnome otherwise i get massive freezing when switching windows with vsync enabled in the clients... Apparently nvidia driver has fixed the issue, freezing is "better" but not playable with 3 clients...
I'd recommend trying out a workspace switching solution with fixed windows and shortcuts if you're on one monitor, multiple monitors i'm not sure what to suggest..
Found it I think. KDE has something like "Focus stealing prevention" that needs to be turned off (System Settings > Window Management > Window Behavior > Focus) PS.: Sorry for the off-topic, but I reckon that someone might run into this as well, so this might help :-) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Jacek Caban <jacek(a)codeweavers.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |2b3a300cbfee15dd6771a0a984c | |13591a2b36358 Status|NEW |RESOLVED --- Comment #48 from Jacek Caban <jacek(a)codeweavers.com> --- Fixed in Git: https://source.winehq.org/git/wine.git/commitdiff/2b3a300cbfee15dd6771a0a984... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Alexandre Julliard <julliard(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #49 from Alexandre Julliard <julliard(a)winehq.org> --- Closing bugs fixed in 6.14. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Mehmet gelisin <mehmetgelisin(a)aol.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mehmetgelisin(a)aol.com --- Comment #50 from Mehmet gelisin <mehmetgelisin(a)aol.com> --- DWORD QueueUserAPC() will return zero with GetLastError() set to return ERROR_ACCESS_DENIED if called on a terminating thread, but ERROR_GEN_FAILURE is the expected return of GetLastError() in this scenario. http://www.compilatori.com/ Unfortunately, it's hard to catch a thread in this state since once a thread has been terminated completely calling on it results in GetLastError() returning ERROR_INVALID_HANDLE as it should. http://www.wearelondonmade.com/ This effects applications using older versions of WebRTC, such as StarCitizen. The chromium development team noticed this and built a workaround into WebRTC to make WebRTC compatible with WINE and Windows in this commit: http://www.jopspeech.com/ DWORD QueueUserAPC() will return zero with GetLastError() set to return ERROR_ACCESS_DENIED if called on a terminating thread, but ERROR_GEN_FAILURE is the expected return of GetLastError() in this scenario. http://joerg.li/ Unfortunately, it's hard to catch a thread in this state since once a thread has been terminated completely calling on it results in GetLastError() returning ERROR_INVALID_HANDLE as it should. http://connstr.net/ This effects applications using older versions of WebRTC, such as StarCitizen. The chromium development team noticed this and built a workaround into WebRTC to make WebRTC compatible with WINE and Windows in this commit: http://embermanchester.uk/ DWORD QueueUserAPC() will return zero with GetLastError() set to return ERROR_ACCESS_DENIED if called on a terminating thread, but ERROR_GEN_FAILURE is the expected return of GetLastError() in this scenario. http://www.slipstone.co.uk/ Unfortunately, it's hard to catch a thread in this state since once a thread has been terminated completely calling on it results in GetLastError() returning ERROR_INVALID_HANDLE as it should. http://www.logoarts.co.uk/ This effects applications using older versions of WebRTC, such as StarCitizen. The chromium development team noticed this and built a workaround into WebRTC to make WebRTC compatible with WINE and Windows in this commit: http://www.acpirateradio.co.uk/ DWORD QueueUserAPC() will return zero with GetLastError() set to return ERROR_ACCESS_DENIED if called on a terminating thread, but ERROR_GEN_FAILURE is the expected return of GetLastError() in this scenario. https://waytowhatsnext.com/ Unfortunately, it's hard to catch a thread in this state since once a thread has been terminated completely calling on it results in GetLastError() returning ERROR_INVALID_HANDLE as it should. https://www.webb-dev.co.uk/ This effects applications using older versions of WebRTC, such as StarCitizen. The chromium development team noticed this and built a workaround into WebRTC to make WebRTC compatible with WINE and Windows in this commit: Unfortunately, it's hard to catch a thread in this state since once a thread has been terminated completely calling on it results in GetLastError() returning ERROR_INVALID_HANDLE as it should. http://www.iu-bloomington.com/ This effects applications using older versions of WebRTC, such as StarCitizen. The chromium development team noticed this and built a workaround into WebRTC to make WebRTC compatible with WINE and Windows in this commit: http://www-look-4.com/ -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Michael Stefaniuc <mstefani(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0.x -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=51465 Michael Stefaniuc <mstefani(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|6.0.x |--- --- Comment #51 from Michael Stefaniuc <mstefani(a)winehq.org> --- Removing the 6.0.x milestone from bug fixes included in 6.0.3. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla