[Bug 41258] UE4 applications crash with "Assertion failed: Count >= 0" ( Epic Games Launcher, Paragon)
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon May 22 00:32:32 CDT 2017
https://bugs.winehq.org/show_bug.cgi?id=41258
Yujiang Wang <alaniwbft at outlook.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |alaniwbft at outlook.com
--- Comment #17 from Yujiang Wang <alaniwbft at outlook.com> ---
After debugging with my UE4 build, I found the bug is related to
EnumDisplayDevicesW:
The engine uses an ugly way to get the device name for monitors. It extracts
the name from the device id by finding a second backslash starting from
position 8:
Engine\Source\Runtime\Core\Private\Windows\WindowsApplication.cpp:
GetMonitorsInfo: 611
Info.ID = FString::Printf(TEXT("%s"), Monitor.DeviceID);
Info.Name = Info.ID.Mid (8, Info.ID.Find (TEXT("\\"),
ESearchCase::CaseSensitive, ESearchDir::FromStart, 9) - 8);
The Monitor.DeviceID comes from
EnumDisplayDevices(DisplayDevice.DeviceName, MonitorIndex, &Monitor, 0)
On Windows, Monitor.DeviceID is set to something like:
MONITOR\HWP3183\{4d36e96e-e325-11ce-bfc1-08002be10318}\0001
while wine set it to:
MONITOR\WINE0000
Clearly we can see there is no second backslash to be found, thus causing a
crash.
The device id is defined at:
wine-staging/patches/gdi32-MultiMonitor/0003-user32-Implement-EnumDisplayDevicesW-based-on-EnumDi.patch:
29
+static const WCHAR display_device_deviceid[] =
{'M','O','N','I','T','O','R','\\','W','I','N','E','%','0','4','d',0};
I changed it by just adding a backslash:
+static const WCHAR display_device_deviceid[] =
{'M','O','N','I','T','O','R','\\','W','I','N','E','%','0','4','d','\\',0};
Now the engine gets through. Maybe we can fake a guid here to get more
robustness?
I also prepared a minimal unreal engine 4 project build for you: (UE4 master
branch 4.17 2017-05-22 VS2015 Windows 10)
https://www.dropbox.com/s/2g2tl7gz7bsiop5/WineTest.7z?dl=0
This build comes along with pdb files. I think it will be useful for you.
Good luck!
--
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