https://bugs.winehq.org/show_bug.cgi?id=34978
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Multiple applications need |Many applications need a |a EnumDisplayDevicesW |EnumDisplayDevicesW |implementation for |implementation for |multi-monitor environment |multi-monitor environment |support (DisplayFusion, |support (DisplayFusion, |Turbo Tax 2012, WPF 4.x |Turbo Tax 2012, WPF 4.x |.NET apps) |.NET apps, CEFv3 apps) Severity|normal |major
--- Comment #14 from Anastasius Focht focht@gmx.net --- Hello folks,
while investigating bug 45455 I found CEFv3-based (certain version ranges) apps also suffer from this. Symptom: apps appear to hang on startup with no user interface shown on a multi-monitor system (live-loop in 'libcef.dll').
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/UP Studio/win32
$ WINEDEBUG=+seh,+relay wine ./UPStudio.exe >>log.txt 2>&1 ... 003b:Call user32.EnumDisplayMonitors(00000000,00000000,11def9e4,0033f890) ret=11defac6 003b:Call winex11.drv.EnumDisplayMonitors(00000000,00000000,7e4cafa4,0033f808) ret=7e4cb004 003b:Call KERNEL32.LoadLibraryW(1392658c L"shcore.dll") ret=106c1743 003b:Call PE DLL (proc=0x7acfb03b,module=0x7acf0000 L"shcore.dll",reason=PROCESS_ATTACH,res=(nil)) 003b:Call KERNEL32.DisableThreadLibraryCalls(7acf0000) ret=7acfaf38 003b:Ret KERNEL32.DisableThreadLibraryCalls() retval=00000001 ret=7acfaf38 003b:Ret PE DLL (proc=0x7acfb03b,module=0x7acf0000 L"shcore.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 003b:Ret KERNEL32.LoadLibraryW() retval=7acf0000 ret=106c1743 003b:Call KERNEL32.GetProcAddress(7acf0000,13926574 "GetProcessDpiAwareness") ret=106c1753 003b:Ret KERNEL32.GetProcAddress() retval=7acfae34 ret=106c1753 003b:Call shcore.GetProcessDpiAwareness(00000000,0033f63c) ret=106c175f 003b:Call user32.GetProcessDpiAwarenessInternal(00000000,0033f63c) ret=7acfaf6d 003b:Ret user32.GetProcessDpiAwarenessInternal() retval=00000001 ret=7acfaf6d 003b:Ret shcore.GetProcessDpiAwareness() retval=00000000 ret=106c175f 003b:Call user32.GetDC(00000000) ret=11ae2d77 003b:Call user32.GetDpiForSystem() ret=7e8829c0 003b:Ret user32.GetDpiForSystem() retval=00000060 ret=7e8829c0 003b:Call winex11.drv.GetDC(0003004e,0002002c,0002002c,0033f4d8,0033f4c8,00000013) ret=7e4d19d1 003b:Ret winex11.drv.GetDC() retval=00000001 ret=7e4d19d1 003b:Ret user32.GetDC() retval=0003004e ret=11ae2d77 003b:Call gdi32.GetDeviceCaps(0003004e,00000058) ret=11df0b23 003b:Call user32.GetDpiForSystem() ret=7e8829c0 003b:Ret user32.GetDpiForSystem() retval=00000060 ret=7e8829c0 003b:Ret gdi32.GetDeviceCaps() retval=00000060 ret=11df0b23 003b:Call gdi32.GetDeviceCaps(0003004e,0000005a) ret=11df0b31 003b:Call user32.GetDpiForSystem() ret=7e8829c0 003b:Ret user32.GetDpiForSystem() retval=00000060 ret=7e8829c0 003b:Ret gdi32.GetDeviceCaps() retval=00000060 ret=11df0b31 003b:Call user32.ReleaseDC(00000000,0003004e) ret=11df0b47 003b:Call user32.GetDpiForSystem() ret=7e8829c0 003b:Ret user32.GetDpiForSystem() retval=00000060 ret=7e8829c0 003b:Ret user32.ReleaseDC() retval=00000001 ret=11df0b47 003b:Call user32.GetMonitorInfoW(00000001,0033f69c) ret=11df0290 003b:Call winex11.drv.GetMonitorInfo(00000001,0033f69c) ret=7e4caf19 003b:Ret winex11.drv.GetMonitorInfo() retval=00000001 ret=7e4caf19 003b:Ret user32.GetMonitorInfoW() retval=00000001 ret=11df0290 003b:Call user32.EnumDisplaySettingsW(0033f6c4 L"\\.\DISPLAY1",ffffffff,0033f570) ret=11df1e96 003b:Call winex11.drv.EnumDisplaySettingsEx(0033f6c4,ffffffff,0033f570,00000000) ret=7e4e592f 003b:Ret winex11.drv.EnumDisplaySettingsEx() retval=00000001 ret=7e4e592f 003b:Ret user32.EnumDisplaySettingsW() retval=00000001 ret=11df1e96 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab2e0 ret=11367113 003b:Call ntdll.RtlFreeHeap(00110000,00000000,0fdab2e0) ret=113670f4 003b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=113670f4 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000030) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab340 ret=11367113 003b:Call user32.GetMonitorInfoW(00000002,0033f69c) ret=11df0290 003b:Call winex11.drv.GetMonitorInfo(00000002,0033f69c) ret=7e4caf19 003b:Ret winex11.drv.GetMonitorInfo() retval=00000001 ret=7e4caf19 003b:Ret user32.GetMonitorInfoW() retval=00000001 ret=11df0290 003b:Call user32.EnumDisplaySettingsW(0033f6c4 L"\\.\DISPLAY1",ffffffff,0033f570) ret=11df1e96 003b:Call winex11.drv.EnumDisplaySettingsEx(0033f6c4,ffffffff,0033f570,00000000) ret=7e4e592f 003b:Ret winex11.drv.EnumDisplaySettingsEx() retval=00000001 ret=7e4e592f 003b:Ret user32.EnumDisplaySettingsW() retval=00000001 ret=11df1e96 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab3d0 ret=11367113 003b:Call ntdll.RtlFreeHeap(00110000,00000000,0fdab3d0) ret=113670f4 003b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=113670f4 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000060) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab4d0 ret=11367113 003b:Call ntdll.RtlFreeHeap(00110000,00000000,0fdab340) ret=113670f4 003b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=113670f4 003b:Ret winex11.drv.EnumDisplayMonitors() retval=00000001 ret=7e4cb004 003b:Ret user32.EnumDisplayMonitors() retval=00000001 ret=11defac6 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000060) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab3d0 ret=11367113 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000030) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab340 ret=11367113 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000018) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab490 ret=11367113 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000030) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab378 ret=11367113 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab5a8 ret=11367113 003b:Call ntdll.RtlFreeHeap(00110000,00000000,0fdab378) ret=113670f4 003b:Ret ntdll.RtlFreeHeap() retval=00000001 ret=113670f4 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000048) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab6a0 ret=11367113 003b:Call ntdll.RtlAllocateHeap(00110000,00000000,00000090) ret=11367113 003b:Ret ntdll.RtlAllocateHeap() retval=0fdab6f0 ret=11367113 ... <repeats endlessly> --- snip ---
--- snip --- $ Wine-dbg> info process pid threads executable (all id:s are in hex) 00000028 4 'explorer.exe' 0000000e 6 'services.exe' 00000020 4 _ 'winedevice.exe' 0000001b 3 _ 'plugplay.exe' 00000011 4 _ 'winedevice.exe' 00000008 6 'UPStudio.exe'
Wine-dbg>attach 0x8 validate_block_pointer () at /home/focht/projects/wine/mainline-src/dlls/ntdll/heap.c:1408 0x7bc629e6 validate_block_pointer+0x3 [/home/focht/projects/wine/mainline-src/dlls/ntdll/heap.c:1408] in ntdll: subl $88,%esp 1408 {
Wine-dbg>info thread process tid prio (all id:s are in hex) 00000008 (D) C:\Program Files\UP Studio\win32\UPStudio.exe 0000004a 0 00000049 0 00000048 0 00000047 0 00000046 0 00000009 0 <==
Wine-dbg>bt
Backtrace: =>0 0x7bc629e6 validate_block_pointer+0x3() [/home/focht/projects/wine/mainline-src/dlls/ntdll/heap.c:1408] in ntdll (0x0033f618) 1 0x7bc6386e RtlFreeHeap+0xa5() [/home/focht/projects/wine/mainline-src/dlls/ntdll/heap.c:1776] in ntdll (0x0033f658) 2 0x113670f4 in libcef (+0x13670f3) (0x0033f678) 3 0x1136708b in libcef (+0x136708a) (0x0033f684) 4 0x11366f81 in libcef (+0x1366f80) (0x0033f694) 5 0x100e04d6 in libcef (+0xe04d5) (0x0033f6a0) 6 0x12368bd5 in libcef (+0x2368bd4) (0x0033f6c0) 7 0x12368bf4 in libcef (+0x2368bf3) (0x0033f6e0) 8 0x11470aa2 in libcef (+0x1470aa1) (0x0033f704) 9 0x11df158b in libcef (+0x1df158a) (0x0033f740) 10 0x11def962 in libcef (+0x1def961) (0x0033f858) 11 0x11df069b in libcef (+0x1df069a) (0x0033f878) 12 0x11df0217 in libcef (+0x1df0216) (0x0033f8a4) 13 0x11def3e1 in libcef (+0x1def3e0) (0x0033f8b8) 14 0x11f28b1c in libcef (+0x1f28b1b) (0x0033f948) 15 0x1163daec in libcef (+0x163daeb) (0x0033f964) 16 0x1149054f in libcef (+0x149054e) (0x0033f9d4) 17 0x11492fcc in libcef (+0x1492fcb) (0x0033fa8c) 18 0x11a3e453 in libcef (+0x1a3e452) (0x0033fae8) 19 0x119fdc97 in libcef (+0x19fdc96) (0x0033fb00) 20 0x119fdbf5 in libcef (+0x19fdbf4) (0x0033fb54) 21 0x11a0933a in libcef (+0x1a09339) (0x0033fb98) 22 0x11a08f6f in libcef (+0x1a08f6e) (0x0033fbbc) 23 0x1133a527 in libcef (+0x133a526) (0x0033fcb8) 24 0x0067fe2b in upstudio (+0x27fe2a) (0x0033fcf0) 25 0x005da0ad in upstudio (+0x1da0ac) (0x0033fe64) ... --- snip ---
--- snip --- -=[ ProtectionID v0.6.9.0 DECEMBER]=- (c) 2003-2017 CDKiLLER & TippeX Build 24/12/17-21:05:42 Ready... Scanning -> C:\Program Files\UP Studio\win32\libcef.dll File Type : 32-Bit Dll (Subsystem : Win CUI / 3), Size : 63810032 (03CDA9F0h) Byte(s) | Machine: 0x14C (I386) Compilation TimeStamp : 0x5814380C -> Sat 29th Oct 2016 05:47:56 (GMT) [TimeStamp] 0x5814380C -> Sat 29th Oct 2016 05:47:56 (GMT) | PE Header | - | Offset: 0x00000148 | VA: 0x10000148 | - [TimeStamp] 0x58143659 -> Sat 29th Oct 2016 05:40:41 (GMT) | Export | - | Offset: 0x03A3E054 | VA: 0x13A3F254 | - [TimeStamp] 0x5814380C -> Sat 29th Oct 2016 05:47:56 (GMT) | DebugDirectory | - | Offset: 0x03A356A4 | VA: 0x13A368A4 | - [TimeStamp] 0x5814380C -> Sat 29th Oct 2016 05:47:56 (GMT) | DebugDirectory | - | Offset: 0x03A356C0 | VA: 0x13A368C0 | - -> File Appears to be Digitally Signed @ Offset 03CD9800h, size : 011F0h / 04592 byte(s) [!] Executable uses TLS callbacks (3 total... 0 invalid addresses) [LoadConfig] Struct determined as v8 (Expected size 140 | Actual size 64) [!] Executable uses SEH Tables (/SAFESEH) (42 calculated 11 recorded... 24 invalid addresses) [!] * table may be compressed / encrypted * [LoadConfig] CodeIntegrity -> Flags 0x0 | Catalog 0x0 (0) | Catalog Offset 0xE0000000 | Reserved 0x3F3217F7 [LoadConfig] GuardAddressTakenIatEntryTable 0x60000000 | Count 0x3F810A82 (1065421442) [LoadConfig] GuardLongJumpTargetTable 0xC0000000 | Count 0x3FB997F3 (1069127667) [LoadConfig] HybridMetadataPointer 0x0 | DynamicValueRelocTable 0x3FE62C00 [LoadConfig] FailFastIndirectProc 0x0 | FailFastPointer 0x406CA000 [LoadConfig] UnknownZero1 0x0 [File Heuristics] -> Flag #1 : 00000100000001001101000100000100 (0x0404D104) [Entrypoint Section Entropy] : 6.78 (section #0) ".text " | Size : 0x30D6803 (51210243) byte(s) [DllCharacteristics] -> Flag : (0x0140) -> ASLR | DEP [SectionCount] 10 (0xA) | ImageSize 0x3DD5000 (64835584) byte(s) [Export] 100% of function(s) (189 of 189) are in file | 0 are forwarded | 189 code | 0 data | 0 uninit data | 0 unknown | [VersionInfo] Product Name : Chromium Embedded Framework (CEF) Dynamic Link Library [VersionInfo] Product Version : 3.2840.1511.gb345083 [VersionInfo] File Description : Chromium Embedded Framework (CEF) Dynamic Link Library [VersionInfo] File Version : 3.2840.1511.gb345083 [VersionInfo] Original FileName : libcef.dll [VersionInfo] Internal Name : libcef [VersionInfo] Legal Copyrights : Copyright (C) 2016 The Chromium Embedded Framework Authors [ModuleReport] [IAT] Modules -> ADVAPI32.dll | dbghelp.dll | GDI32.dll | KERNEL32.dll | ole32.dll | OLEAUT32.dll | PSAPI.DLL | SHELL32.dll | SHLWAPI.dll | USER32.dll | WINMM.dll | WS2_32.dll | USERENV.dll | OLEACC.dll | IMM32.dll | WTSAPI32.dll | COMCTL32.dll | d3d11.dll | dxgi.dll | COMDLG32.dll | USP10.dll | VERSION.dll | credui.dll | dwmapi.dll | NETAPI32.dll | DWrite.dll | CRYPT32.dll | IPHLPAPI.DLL | RPCRT4.dll | Secur32.dll | urlmon.dll | WINHTTP.dll | d3d9.dll | dxva2.dll | WINSPOOL.DRV | CRYPTUI.dll | dhcpcsvc.DLL [ModuleReport] [DelayImport] Modules -> CFGMGR32.dll | SETUPAPI.dll | POWRPROF.dll | MF.dll | MFPlat.DLL | MFReadWrite.dll | bthprops.cpl | BluetoothApis.dll | NDFAPI.DLL [Debug Info] (record 1 of 2) (file offset 0x3A356A0) Characteristics : 0x0 | TimeDateStamp : 0x5814380C (Sat 29th Oct 2016 05:47:56 (GMT)) | MajorVer : 0 / MinorVer : 0 -> (0.0) Type : 2 (0x2) -> CodeView | Size : 0x58 (88) AddressOfRawData : 0x3A3D1CC | PointerToRawData : 0x3A3BFCC CvSig : 0x53445352 | SigGuid B5F519B2-595F-49E8-A4C8D62787E6D077 Age : 0x1 (1) | Pdb : Y:\work\CEF3_git\chromium\src\out\Release_GN_x86\libcef.dll.pdb [Debug Info] (record 2 of 2) (file offset 0x3A356BC) Characteristics : 0x0 | TimeDateStamp : 0x5814380C (Sat 29th Oct 2016 05:47:56 (GMT)) | MajorVer : 0 / MinorVer : 0 -> (0.0) Type : 13 (0xD) -> Undocumented | Size : 0x478 (1144) AddressOfRawData : 0x3A3D224 | PointerToRawData : 0x3A3C024 ... [!] File appears to have no protection or is using an unknown protection - Scan Took : 10.936 Second(s) [000002750h (10064) tick(s)] [246 of 580 scan(s) done] --- snip ---
CEF 3.2840.1511.gb345083
-> https://bitbucket.org/chromiumembedded/cef/get/b345083.zip
--- snip --- int CefBrowserMainParts::PreCreateThreads() { #if defined(OS_WIN) PlatformInitialize(); #endif
net::NetModule::SetResourceProvider(&NetResourceProvider);
// Initialize the GpuDataManager before IO access restrictions are applied and // before the IO thread is started. content::GpuDataManager::GetInstance();
#if defined(USE_AURA) display::Screen::SetScreenInstance(views::CreateDesktopScreen()); #endif
return 0; } --- snip ---
Workarounds: disable all but one display (xrandr) or use Wine-Staging
$ sha1sum UP_Studio_x86_2.4.22.351.exe 9ef910e38e19e094f4abee407fd712d3f30f01e8 UP_Studio_x86_2.4.22.351.exe
$ du -sh UP_Studio_x86_2.4.22.351.exe 127M UP_Studio_x86_2.4.22.351.exe
$ wine --version wine-3.12-206-gbb264a0ac6
Regards