[Bug 49640] New: Loading certain builtin/Winelib DLLs twice may crash
WineHQ Bugzilla
wine-bugs at winehq.org
Thu Jul 30 18:54:53 CDT 2020
https://bugs.winehq.org/show_bug.cgi?id=49640
Bug ID: 49640
Summary: Loading certain builtin/Winelib DLLs twice may crash
Product: Wine
Version: 5.13
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ntdll
Assignee: wine-bugs at winehq.org
Reporter: bshanks at codeweavers.com
Distribution: ---
When certain "builtin"/Winelib DLLs/EXEs get loaded, then unloaded, then loaded
again (by two calls to GetFileVersionInfoSize() for example), the second load
may result in a crash.
The underlying problem is that dlopen_dll() in dlls/ntdll/unix/loader.c assumes
that dlopen() is returning a freshly-mapped copy of the file. POSIX doesn't
guarantee this though, and if the file was already previously loaded by Wine,
and relocation fixups were applied, those fixed-up headers will be still be
present. map_so_dll then applies fixups again, and that's where I'm seeing the
crash. In particular, when map_so_dll is building the import directory, I see
that imports->Name already has the delta applied to it from the previous load.
An EXE that has this problem is the "steam.exe.so" shipped with Proton, I
believe since it links to a C++ library it will not be unloaded by a dlclose()
call (see
https://stackoverflow.com/questions/38869657/dlclose-not-unloading-so-file-which-is-linking-to-boost)
--
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.
More information about the wine-bugs
mailing list