[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