[Bug 35884] Visual Studio 20XX frequently calls CoGetCallerTID(), resulting in console spam due to stub

WineHQ Bugzilla wine-bugs at winehq.org
Sat Jan 4 07:07:46 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=35884

--- Comment #6 from Nikolay Sivov <bunglehead at gmail.com> ---
Improved layout with more fields matching on x64 would be something like this:

---
struct oletls
{
    struct apartment *apt;
    IErrorInfo       *errorinfo;   /* see errorinfo.c */
    DWORD             thread_seqid;/* (+8h/+10h) returned with
CoGetCurrentProcess */
    DWORD             apt_mask;    /* (+Ch/+14h) apartment mask */
    DWORD             inits;
    DWORD_PTR         unknown1;
    DWORD             ole_inits;
    DWORD             unknown2;
    DWORD_PTR         unknown3[5];
    DWORD             caller_tid;    /* (+34h/+58h) CoGetCallerTID() */
    DWORD_PTR         unknown4;
    IObjContext      *context_token; /* (+38h/+68h on x86) */
    IUnknown         *call_state;    /* current call context (+3Ch on x86) */
    DWORD             unknown5[12];
    GUID              causality_id;  /* (+80h/+d8h) */
    DWORD             unknown6[18];
    IUnknown         *cancel_object; /* cancel object set by CoSetCancelObject
(+F8h on x86) */
    IUnknown         *state;       /* see CoSetState */
    struct list       spies;         /* Spies installed with
CoRegisterInitializeSpy */
    DWORD             spies_lock;
    LONG              pending_call_count_client; /* number of client calls
pending */
    LONG              pending_call_count_server; /* number of server calls
pending */
};
---

So caller tid is at 0x58. Function seems to simply return this field value.

Regarding actually implementing this, I think it could about the same as
causality id being set/restored around RPC_ExecuteCall(), which real question
being how this TID is communicated through RPC_MESSAGE. (This is probably
limited to same machine case, or even for certain local protocols)

-- 
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