Closed
Bug 13724
Opened 25 years ago
Closed 25 years ago
AutoProxification causes deadlock
Categories
(Core :: XPCOM, defect, P3)
Tracking
()
RESOLVED
FIXED
M14
People
(Reporter: dougt, Assigned: dougt)
References
Details
Here's my current example (simplified for brevity): interface nsIImapMessageSink : nsISupports { void SetupMsgWriteStream(in nsIFileSpec aFileSpec, in boolean appendDummyEnvelope); } Now from thread A which happens to be an imap connection thread, I call setupMsgWriteStream nsCOMPtr<nsIFileSpec> fileSpec; PRBool addDummyEnvelope = PR_TRUE; rv = msgurl->GetMessageFile(getter_AddRefs(fileSpec)); if (NS_FAILED(rv)) return rv; m_imapMessageSink->SetupMsgWriteStream(fileSpec, addDummyEnvelope); Now, thread A is blocked until the message sink call to setupMsgWriteStream is proxied and completed on thread B (which is the UI thread). Thread B makes a call like the following: SetupMsgWriteStream(nsIFileSpec * aFileSpec, PRBool addDummyEnvelope) { *blah* aFileSpec->GetFileSpec(&fileSpec); *blah* } The call to GetFileSpec turns into a auto-proxy call back to thread A. But events aren't getting pumped on thread A because it is blocked waiting for B to return. Hence the dead lock.
Assignee | ||
Updated•25 years ago
|
Status: NEW → ASSIGNED
Target Milestone: M14
Assignee | ||
Comment 1•25 years ago
|
||
I have disabled this. Re-address after beta
Assignee | ||
Updated•25 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 2•25 years ago
|
||
I have a nested event loop know which prevents deadlock. All I have to do is remove the #ifdef's which I previously added. I am going to mark this as fixed, but leave the #ifdefs in until I fix 16773 and coclasses are invented.
You need to log in
before you can comment on or make changes to this bug.
Description
•