[PATCH] combase: Check all apartment types when looking for an apartment belonging to a thread.
Dmitry Timoshkov
dmitry at baikal.ru
Wed Jul 28 10:01:00 CDT 2021
Hi Huw,
Huw Davies <huw at codeweavers.com> wrote:
> This doesn't look right. At the very least, this won't work if the
> MTA isn't found, as it will return in the if block above. More
> fundamentally though, what's actually going on here? If the thread
> has joined an apartment-threaded apartment, then I'd expect that
> should be the one that's used. Some tests would help here.
I'm attaching the test that reproduces the problem. Since the app that
I have here is .Net based it uses CoIncrementMTAUsage() that leads to
an MTA creation, however creating an MTA in a separate thread (using
CoInitializeEx(NULL, COINIT_MULTITHREADED) and leaving that thread run
in background) reproduce this bug as well. The test runs fine under
Windows however it crashes under Wine:
00b8:err:ole:get_stub_manager_from_ipid not found for ipid {00000001-00b8-00b4-8676-a9129dc206e7}
00b8:err:ole:unmarshal_ORPCTHIS invalid buffer length
wine: Unhandled page fault on read access to 0302000D at address 019C903E (thread 00b8), starting debugger...
I'd appreciate any pointers or help with this bug.
Thanks.
--
Dmitry.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: apt_test.diff
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210728/b35d774f/attachment-0001.ksh>
More information about the wine-devel
mailing list