Closed Bug 1119405 Opened 9 years ago Closed 9 years ago

[e10s] Browser hang (intermittent)

Categories

(Core :: Graphics: Layers, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
e10s + ---

People

(Reporter: cmtalbert, Unassigned)

References

Details

(Whiteboard: gfx-noted)

Using the nightly from January 6 2015 (https://hg.mozilla.org/mozilla-central/rev/33781a3a5201) I hit an odd issue when trying to open a new tab.

This might have been caused by a glitch on my local system and may be completely unreproducible. But the failure case -- a hang and an unresponsive, non-painting browser was pretty awful.

1. Had the browser open with about 100 tabs
2. Tried to open a new URL from an OS action (clicked on it in my irc client)
= Result =
Browser attempted to render, content area went all white, and no part of the browser (chrome or content) was responsive.

= Expected =
Even if the tab crashed, it shouldn't have brought down the whole thing.

This is incredibly intermittent and doesn't usually happen. So I don't know what to make about that, but I captured the stacks below in case they might prove useful. Could fuzzing this (opening lots of tabs from the OS activity) potentially be useful here?

I attached a debugger to it, and it appeared the child process was in the middle of painting (which makes sense given the white screen). And the parent process was in the middle of sending the command to open the new window. Here are the stacks from the relevant threads:
The buffer object in "UpdateConstantBuffers" did not have any data in it, it looked like it was an empty object, which strikes me as odd, but I'm not sure what to expect in this code path.

= Child Process relevant thread =
[External Code] 
  [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
  igd10iumd32.dll!576f3533()  Unknown
  igd10iumd32.dll!576f42c0()  Unknown
  igd10iumd32.dll!576f4b4e()  Unknown
  igd10iumd32.dll!5775992d()  Unknown
  [External Code] 
  igd10iumd32.dll!57752297()  Unknown
  igd10iumd32.dll!577501f7()  Unknown
> xul.dll!mozilla::layers::CompositorD3D11::UpdateConstantBuffers() Line 1351 C++
  xul.dll!mozilla::layers::CompositorD3D11::ClearRect(const mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> & aRect) Line 633 C++
  xul.dll!mozilla::layers::CompositorD3D11::BeginFrame(const nsIntRegion & aInvalidRegion, const mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> * aClipRectIn, const mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> & aRenderBounds, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> * aClipRectOut, mozilla::gfx::RectTyped<mozilla::gfx::UnknownUnits> * aRenderBoundsOut) Line 1098  C++
  xul.dll!mozilla::layers::LayerManagerComposite::Render() Line 704 C++
  xul.dll!mozilla::layers::LayerManagerComposite::EndTransaction(void (mozilla::layers::PaintedLayer *, gfxContext *, const nsIntRegion &, mozilla::layers::DrawRegionClip, const nsIntRegion &, void *) * aCallback, void * aCallbackData, mozilla::layers::LayerManager::EndTransactionFlags aFlags) Line 311 C++
  xul.dll!mozilla::layers::LayerManagerComposite::EndEmptyTransaction(mozilla::layers::LayerManager::EndTransactionFlags aFlags) Line 257 C++
  xul.dll!mozilla::layers::CompositorParent::CompositeToTarget(mozilla::gfx::DrawTarget * aTarget, const nsIntRect * aRect) Line 916  C++
  xul.dll!mozilla::layers::CompositorParent::CompositeCallback(mozilla::TimeStamp aScheduleTime) Line 830 C++
  xul.dll!RunnableMethod<mozilla::layers::CompositorParent,void (__thiscall mozilla::layers::CompositorParent::*)(mozilla::TimeStamp),Tuple1<mozilla::TimeStamp> >::Run() Line 308  C++
  xul.dll!MessageLoop::DoWork() Line 447  C++
  xul.dll!base::MessagePumpForUI::DoRunLoop() Line 217  C++
  xul.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate, base::MessagePumpWin::Dispatcher * dispatcher) Line 56  C++
  xul.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 78 C++
  xul.dll!MessageLoop::RunHandler() Line 227  C++
  xul.dll!MessageLoop::Run() Line 201 C++
  xul.dll!base::Thread::ThreadMain() Line 173 C++
  xul.dll!`anonymous namespace'::ThreadFunc(void * closure) Line 27 C++
  [External Code] 

= Parent Process Relevant code = (The message that is being sent over is the line to open the new tab with the URL I clicked on)
 [External Code] 
  [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]  
> xul.dll!nsACString_internal::ReplacePrepInternal(unsigned int aCutStart, unsigned int aCutLen, unsigned int aFragLen, unsigned int aNewLen) Line 170  C++
  xul.dll!MessageWindow::SendRequest() Line 588 C++
  xul.dll!nsNativeAppSupportWin::Start(bool * aResult) Line 678 C++
  xul.dll!XREMain::XRE_mainStartup(bool * aExitFlag) Line 3684  C++
  xul.dll!XREMain::XRE_main(int argc, char * * argv, const nsXREAppData * aAppData) Line 4211 C++
  xul.dll!XRE_main(int argc, char * * argv, const nsXREAppData * aAppData, unsigned int aFlags) Line 4447 C++
  firefox.exe!do_main(int argc, char * * argv, nsIFile * xreDirectory) Line 292 C++
  firefox.exe!NS_internal_main(int argc, char * * argv) Line 663  C++
  firefox.exe!wmain(int argc, wchar_t * * argv) Line 124  C++
  [External Code]
Clint, we assume that your parent process process stack is bogus. Can you try to get a better one?
Flags: needinfo?(ctalbert)
Interesting. The parent process would have been the one where the OS command came in, no?

It seemed rather light to me as well.

If I can get it to happen again, I'll update it.
Flags: needinfo?(ctalbert)
I can't get this to repro no matter what I do.  Marking WFM....
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.