wine dll loader

Vyacheslav Napadovsky napadovskiy at gmail.com
Thu Mar 3 08:07:46 CST 2016


Thank you, Vincent for advice.

After some investigation I've come to conclusion that
std::this_thread::sleep_for may cause .dll unloading if I'm using
Windows native msvcr120.dll.
And I have to use native msvcr120.dll because some functions that my
thirdparty libraries requires are missing.
Can you please advice further steps to fix this issue (because I think
some other apps may be affected by it)?
// for my app I'm already figured out architecture (init/deinit)
redesign outside DllMain.


With Windows' native msvcr120.dll

Wine-dbg>bt 0x3a
Backtrace:
=>0 0xf77b3440 __kernel_vsyscall+0x10() in [vdso].so (0x00000000)
  1 0xf74d0de7 syscall+0x26() in libc.so.6 (0x00000000)
  2 0x7bc3dbc6 RtlpWaitForCriticalSection+0x1c5() in ntdll (0x02e1e338)
  3 0x7bc3e72b RtlEnterCriticalSection+0x5a() in ntdll (0x02e1e378)
  4 0x7bc58087 LdrUnloadDll+0x56() in ntdll (0x02e1e3d8)
  5 0x7b85c079 FreeLibrary+0x38() in kernel32 (0x02e1e408)
  6 0x02ad1808 in msvcr120 (+0x51807) (0x02e1e458)
  7 0x028dc855 std::this_thread::sleep_for<__int64,std::ratio<1,1000>
>+0x54(_Rel_time=0x2e1e4a8) [c:\program files (x86)\microsoft visual
studio 12.0\vc\include\thread:162] in srv-mod (0x02e1e498)
  8 0x0292e4c1 spdlog::details::async_log_helper<dllthread>::sleep_or_yield+0xa0(now=0x2e1e4d0,
last_op_time=0x2e1e9ac)
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:357]
in srv-mod (0x02e1e4b0)
  9 0x0292cc82 spdlog::details::async_log_helper<dllthread>::process_next_msg+0x121(last_pop=0x2e1e9ac,
last_flush=0x2e1e9a4)
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:310]
in srv-mod (0x02e1e978)
  10 0x0292f3cf
spdlog::details::async_log_helper<dllthread>::worker_loop+0x7e()
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:260]
in srv-mod (0x02e1e9fc)
  11 0x0292fef8 dllthread::threadstart+0x27(param=0x1b72908)
[c:\users\vyacheslav\projects\server\common\eserver\dllthread-win32.cpp:82]
in srv-mod (0x02e1ea08)
  12 0x7bc83c40 call_thread_func_wrapper+0xb() in ntdll (0x02e1ea18)
  13 0x7bc86e9d call_thread_func+0x7c() in ntdll (0x02e1eae8)
  14 0x7bc83c1e RtlRaiseException+0x21() in ntdll (0x02e1eb08)
  15 0x7bc8efb8 in ntdll (+0x7efb7) (0x02e1f358)
  16 0xf759ff70 start_thread+0xcf() in libpthread.so.0 (0x02e1f428)


With Wine's internal msvcr120.dll

wine: Call from 0x7b83d0c2 to unimplemented function
msvcr120.dll.?_Id at _CurrentScheduler@details at Concurrency@@SAIXZ,
aborting
Unhandled exception: unimplemented function
msvcr120.dll.?_Id at _CurrentScheduler@details at Concurrency@@SAIXZ called
in 32-bit code (0x7b83d0c2).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:7b83d0c2 ESP:02e4e3e4 EBP:02e4e458 EFLAGS:00000283(   - --  I S - - -C)
 EAX:7b827c1d EBX:7b8c1000 ECX:00000008 EDX:02e4e40c
 ESI:00000002 EDI:02e4e9ac
Stack dump:
0x02e4e3e4:  02e4e47c 00000008 7bc993c4 80000100
0x02e4e3f4:  00000001 00000000 7b83d0c2 00000002
0x02e4e404:  f6c40a80 f6c42bd7 0005efff 02a90000
0x02e4e414:  00000000 02a94b70 f6b8f000 02e4e488
0x02e4e424:  00000000 02e4e458 7b87f923 02e4e448
0x02e4e434:  00000000 02e4e460 f6c76000 02a94b78
Backtrace:
=>0 0x7b83d0c2 in kernel32 (+0x2d0c2) (0x02e4e458)
  1 0xf6c405d8 in msvcr120 (+0x705d7) (0x02e4e48c)
  2 0xf6bd467d in msvcr120 (+0x467c) (0x02e4e4b0)
  3 0x0293e45f spdlog::details::async_log_helper<dllthread>::sleep_or_yield+0x3e(now=0x2e4e4d0,
last_op_time=0x2e4e9ac)
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:350]
in srv-mod (0x02e4e4b0)
  4 0x0293cc82 spdlog::details::async_log_helper<dllthread>::process_next_msg+0x121(last_pop=0x2e4e9ac,
last_flush=0x2e4e9a4)
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:310]
in srv-mod (0x02e4e978)
  5 0x0293f3cf spdlog::details::async_log_helper<dllthread>::worker_loop+0x7e()
[c:\users\vyacheslav\projects\server\thirdparty\spdlog\include\spdlog\details\async_log_helper.h:260]
in srv-mod (0x02e4e9fc)
  6 0x0293fef8 dllthread::threadstart+0x27(param=0x2a94b48)
[c:\users\vyacheslav\projects\server\common\eserver\dllthread-win32.cpp:82]
in srv-mod (0x02e4ea08)
  7 0x7bc83c40 call_thread_func_wrapper+0xb() in ntdll (0x02e4ea18)
  8 0x7bc86e9d call_thread_func+0x7c() in ntdll (0x02e4eae8)
  9 0x7bc83c1e RtlRaiseException+0x21() in ntdll (0x02e4eb08)
  10 0x7bc8efb8 in ntdll (+0x7efb7) (0x02e4f358)
  11 0xf75daf70 start_thread+0xcf() in libpthread.so.0 (0x02e4f428)


Wine version:

vyacheslav at vyacheslav-box:~$ apt-cache policy winehq-devel
winehq-devel:
  Установлен: 1.9.4~ubuntu14.04.1
  Кандидат:   1.9.4~ubuntu14.04.1
  Таблица версий:
 *** 1.9.4~ubuntu14.04.1 0
        500 http://ppa.launchpad.net/wine/wine-builds/ubuntu/
trusty/main amd64 Packages
        100 /var/lib/dpkg/status

-- 
Vyacheslav Napadovsky



More information about the wine-devel mailing list