[Bug 33749] New: fix for "called from wrong apartment" bug in ClientRpcChannelBuffer_SendReceive

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jun 7 22:42:30 CDT 2013


http://bugs.winehq.org/show_bug.cgi?id=33749

             Bug #: 33749
           Summary: fix for "called from wrong apartment" bug in
                    ClientRpcChannelBuffer_SendReceive
           Product: Wine
           Version: 1.6-rc1
          Platform: x86-64
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: major
          Priority: P2
         Component: ole32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: rosen.diankov at gmail.com
    Classification: Unclassified


There are cases where the "called from wrong apartment" gets called in
ole32/rpc.c:ClientRpcChannelBuffer_SendReceive and there is no COM apartment
set. 

Actually the thread should be using the implicit multithreaded apartment
created from a previous thread's Co­InitializeEx call

http://blogs.msdn.com/b/oldnewthing/archive/2013/04/19/10412399.aspx

Therefore the fix is really simple, add this check right in the beginning of
ClientRpcChannelBuffer_SendReceive

if( !COM_CurrentApt() ) {
    apartment_joinmta();
}

Note that in Windows 7 and beyond, there's a new flag that controls the
implicit MTA behavior called APTTYPEQUALIFIER.

http://msdn.microsoft.com/library/dd542638

Wine should support this for Windows 7 and beyond.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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