[Bug 60177] New: Microsoft Agent 2.0: Characters.Load fails with 0x80042001 (custom marshaling of the notify sink never reaches AgentSvr)
http://bugs.winehq.org/show_bug.cgi?id=60177 Bug ID: 60177 Summary: Microsoft Agent 2.0: Characters.Load fails with 0x80042001 (custom marshaling of the notify sink never reaches AgentSvr) Product: Wine Version: 11.15 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ole32 Assignee: wine-bugs@list.winehq.org Reporter: wehrwolfmann@gmail.com Target Milestone: --- Distribution: --- Microsoft Agent 2.0 does not work under Wine. Any app built on it fails the same way: the client connects to the server, but every Characters.Load returns 0x80042001, "The specified Agent client was not found". The character file is never even opened. Three lines of VBScript are enough, no third-party app needed. With MS Agent 2.0 Core installed into the prefix, run this with the 32-bit cscript (wine C:\windows\syswow64\cscript.exe /nologo agent.vbs): Set a = CreateObject("Agent.Control.2") a.Connected = True a.Characters.Load "Bonzi", "C:\windows\msagent\chars\Bonzi.acs" Steps 1 and 2 succeed, step 3 fails with 0x80042001. What I see with WINEDEBUG=+ole. AgentSvr starts fine and hands the client its IAgentEx through MS Agent's own custom marshaler (AgentMPx.dll) — that direction works, the client gets a usable proxy. Then the client marshals its notify sink back: CoMarshalInterface {00000000-0000-0000-c000-000000000046}, dwDestContext=2, custom CoMarshalInterface completed with hr 0 and the server never unmarshals it — there is not a single "Using custom unmarshaling" in the server process for the whole run. So the server has no registered client and answers Load with "client not found". With WINEDEBUG=+file you can see the character file is located and then dropped: FindFirstFileExW on C:\windows\Msagent\CHARS\Bonzi.acs finds it, but NtCreateFile is never called on it. The failure is well before any file I/O. I also tried the workaround from the AppDB entry for Animation:Master (start AgentSvr.exe by hand first, set it to Windows 98 in winecfg). It changes nothing here. Tested on wine-11.15, 32-bit MS Agent 2.0 Core in a clean WoW64 prefix. I can attach the +ole logs for both the script and a real application if that helps. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=60177 --- Comment #1 from Wehrwolfmann <wehrwolfmann@gmail.com> --- Addendum to bug 60177 — this is a regression, and I have narrowed it down. Same three-line VBScript reproducer as in the report: Set a = CreateObject("Agent.Control.2") a.Connected = True a.Characters.Load "Bonzi", "C:\windows\msagent\chars\Bonzi.acs" Run it with the 32-bit cscript. Load returns 0x80042001 on broken versions and succeeds on working ones. Nothing else in the prefix changes between runs: I install the same MS Agent 2.0 files and register them the same way every time. Versions I tested (Arch packages from archive.archlinux.org, unpacked into a private directory, plus Proton's wine builds): 10.0 ok 10.11 ok 10.16 ok 10.17 broken 10.18 broken 11.0 broken 11.15 broken So the last good release is 10.16 and the first bad one is 10.17. It is also not related to the new WoW64 mode: a pure WINEARCH=win32 prefix on wine 11.0 fails exactly the same way, and a win64 prefix on wine 10.0 works. Both architectures behave the same, only the version matters. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=60177 Wehrwolfmann <wehrwolfmann@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression -- 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.
http://bugs.winehq.org/show_bug.cgi?id=60177 --- Comment #2 from Ken Sharp <imwellcushtymelike@gmail.com> --- Please run a regression test. https://gitlab.winehq.org/wine/wine/-/wikis/Regression-Testing -- 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.
http://bugs.winehq.org/show_bug.cgi?id=60177 Wehrwolfmann <wehrwolfmann@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |120db075b5e8863c1ded907e38a | |88662d5ff8e39 CC| |rbernon@codeweavers.com --- Comment #3 from Wehrwolfmann <wehrwolfmann@gmail.com> --- Bisected. The first bad commit is: 120db075b5e8863c1ded907e38a88662d5ff8e39 winex11: Call window_set_wm_state instead of map_window. Its direct parent, 50a51d9aa11 ("winex11: Remove unnecessary calls to map_window helper"), was built and tested separately and is good, so the boundary is that single commit and not a range. How I ran it: 10 builds between Release 10.16 (good) and Release 10.17 (bad), both endpoints rebuilt from source with the same script rather than taken from packages. Every step configures with --enable-archs=i386,x86_64 --disable-tests, installs into a private DESTDIR, creates a fresh prefix, installs the same MS Agent 2.0 files and runs the reproducer from the report. No step had to be skipped: 7 bad, 3 good, no build failures. I cannot yet point at the line that breaks it. What I can add is that the commit does two things at once in dlls/winex11.drv/window.c: it inlines map_window() into X11DRV_WindowPosChanged, and it drops the "if (!is_managed( hwnd )) return;" guard in make_owner_managed(), which now runs earlier and under a different condition. MS Agent is an out-of-process COM server whose marshaling goes through hidden OLE windows, and on the broken versions IsWindow() for the client window returns FALSE inside AgentSvr while the client's notify sink is never unmarshaled - which is why a change to when windows become managed looks related. That last part is a guess; the bisect result itself is not. Happy to test a patch or run any further build you want. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=60177 Ken Sharp <imwellcushtymelike@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|ole32 |winex11.drv -- 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.
participants (1)
-
WineHQ Bugzilla