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
•