http://bugs.winehq.org/show_bug.cgi?id=59771 Bug ID: 59771 Summary: TrackChecker-x64.exe hangs at 100% CPU on startup since Wine 11.7 (msxml3 regression) Product: Wine Version: 11.9 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msxml3 Assignee: wine-bugs@list.winehq.org Reporter: alfrlr@gmail.com Distribution: --- Created attachment 80978 --> http://bugs.winehq.org/attachment.cgi?id=80978 Wine debug output (err+all,warn-all) with builtin msxml3. Shows fixme:msxml:domdoc_get_parseError calls immediately before the process enters 100% CPU infinite recursion loop. Process was killed after TrackChecker (https://trackchecker.net), a 64-bit Windows application (PE32+ x86-64, subsystem 6.00), worked correctly under Wine Staging 11.6 but hangs at 100% CPU with no window since Wine 11.7. The process never terminates on its own and must be killed. Regression introduced: Wine 11.7 ("Beginnings of MSXML reimplementation without libxml2") Last working version: Wine Staging 11.6 Prefix setup: WINEARCH=win64 wineboot winetricks vcrun2013 winetricks oleaut32 winetricks comctl32 Windows version in prefix: 6.1 (Win 7), confirmed via: wine reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion Note: these components may not be necessary to trigger the bug. They reflect the tested configuration. Steps to reproduce: Create a win64 WINEPREFIX with the setup above Copy TrackChecker-x64.exe and its data files (including data.xml, ~3.4MB) into C:\TrackChecker\ Run: wine "C:\\TrackChecker\\TrackChecker-x64.exe" Expected: Application window appears Actual: Process spins at 100% CPU indefinitely, no window is created, must be killed manually Technical analysis: With WINEDEBUG=err+all, the last msxml activity logged before the spin begins: fixme:msxml:domdoc_get_parseError ... semi-stub fixme:msxml:domdoc_get_parseError ... semi-stub fixme:msxml:domdoc_get_parseError ... semi-stub strace attached to the spinning process shows a continuous tight loop of Wine's stack growth handler: rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT USR1 USR2 ALRM CHLD IO], [], 8) = 0 mprotect(0xc3e0000, 65536, PROT_READ|PROT_WRITE) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT QUIT USR1 USR2 ALRM CHLD IO], [], 8) = 0 mprotect(0xc3f0000, 65536, PROT_READ|PROT_WRITE) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 ... This pattern (mprotect on incrementing addresses) is Wine's guard page expansion firing continuously — definitive infinite recursion consuming the entire stack. /proc/<pid>/wchan = 0 — the process is spinning entirely in userspace, never blocking. The application uses CoCreateInstance on CLSID {f6d90f11-9c73-11d3-b32e-00c04f990bb4} (DOMDocument30 / msxml3) to parse its data.xml configuration file at startup. The COM class is correctly registered in the prefix. Attempting to use native msxml3 (both via winetricks and by manually copying a genuine 64-bit msxml3.dll from a Windows 10 installation) did not resolve the issue: winetricks msxml3 installs only a 32-bit DLL which cannot load in a 64-bit process, and the Windows 10 native 64-bit DLL fails to load in Wine due to unresolved dependencies. A related regression (PLSQL Developer failing to start on Wine 11.7, also msxml3-related) was fixed in Wine 11.8, but TrackChecker's code path is not covered by that fix and remains broken in Wine 11.9. Workaround: Using Wine Staging 11.6 resolves the issue completely. -- 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.