[Bug 34978] Many applications need a EnumDisplayDevicesW implementation for multi-monitor environment support (DisplayFusion, Turbo Tax 2012, WPF 4.x .NET apps, CEFv3 apps)
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Jul 20 05:15:24 CDT 2018
https://bugs.winehq.org/show_bug.cgi?id=34978
Anastasius Focht <focht at 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 at 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
--
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