Closed Bug 1146797 Opened 9 years ago Closed 9 years ago

Deadlock with e10s when closing a window

Categories

(Core :: DOM: Content Processes, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
e10s + ---

People

(Reporter: bent.mozilla, Unassigned)

References

Details

Attachments

(1 file)

Attached file Hang stack traces
Stacks of the main threads for both processes are attached. I think Windows is waiting on the child process to respond to a sync message, but I am not 100% sure. In any case, the child is blocked waiting for the parent and never returns.
(This was with 3/23/15 nightly, x64, build id was 20150323030203)
Hardware: x86 → x86_64
Oh, and I had been fooling around with TabTip (accessibility app, see bug 1133351, comment 0). The accessibility+e10s warning doorhanger had been visible at some point during the app lifetime, so maybe this is due to accessibility somehow?
Flags: needinfo?(jmathies)
(In reply to Ben Turner <unresponsive until 3/30> (use the needinfo flag!) from comment #2)
> Oh, and I had been fooling around with TabTip (accessibility app, see bug
> 1133351, comment 0). The accessibility+e10s warning doorhanger had been
> visible at some point during the app lifetime, so maybe this is due to
> accessibility somehow?

Have you seen this without a11y running? An a11y hang seems pretty plausible since the e10s a11y code Trevor's been adding isn't complete / well tested.

Any STR?

I'm *really* curious about reproducible hangs when running under e10s. We've put mitigation in place to prevent this, but there are probably some corner cases we can get into. Problem is, I've seen zero bugs related to plugin hangs in nightly+e10s so far.
Flags: needinfo?(jmathies)
Flags: needinfo?(jmathies)
(In reply to Jim Mathies [:jimm] from comment #3)
> Have you seen this without a11y running?

No...

> Any STR?

I just opened a new window and then closed it after a second or two.
Blocks: e10sa11y2
tracking-e10s: --- → +
Flags: needinfo?(jmathies)
So, from the stacks it looks like the parent sends an async message to the child telling it a window is being deactivated, and then goes off to destroy a window.  In the child while handling that async message saying the window is being deactivated dispatches a sync message to the parent for some cpow thing.  So the child is blocked on the parent answering its message, but I'm not sure why the parent is blocked in NtUserDestroyWindow.  What does that function do?  I suppose this could somehow be related to the fake windows accessibility sometimes creates?
(In reply to Trevor Saunders (:tbsaunde) from comment #5)
> So, from the stacks it looks like the parent sends an async message to the
> child telling it a window is being deactivated, and then goes off to destroy
> a window.  In the child while handling that async message saying the window
> is being deactivated dispatches a sync message to the parent for some cpow
> thing.  So the child is blocked on the parent answering its message, but I'm
> not sure why the parent is blocked in NtUserDestroyWindow.  What does that
> function do?  I suppose this could somehow be related to the fake windows
> accessibility sometimes creates?

NtUserDestroyWindow may be trying to use SendMessage to send an event sync to a native window and the receiving dispatch loop isn't running. Probably because it's blocked in some ipc related WaitForSyncNotify call.
Hopefully this went away (?) with the bug 1149772 fix.
Tumbleweeds. Please reopen if this is still happening.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: