Closed Bug 1221992 Opened 4 years ago Closed 4 years ago

clients.openWindow opens tabs in the private window

Categories

(Core :: DOM: Push Notifications, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla45
Tracking Status
firefox45 --- fixed

People

(Reporter: marco, Assigned: catalinb)

References

(Blocks 1 open bug)

Details

Attachments

(3 files, 5 obsolete files)

I've been trying to debug some code using clients.openWindow for a while (no tabs were opened but the openWindow promise was resolved), then I noticed my private window was full of tabs.

If you have a private window opened, clients.openWindow:
- will open the new tab in the private window;
- won't focus the newly opened tab.

The code I'm using is really simple:
> self.addEventListener('notificationclick', function(event) {
>   event.waitUntil(clients.matchAll().then(function(clientList) {
>     if (clientList.length > 0) {
>       return clientList[0].focus();
>     } else {
>       return clients.openWindow();
>     }
>   }));
> });
Assignee: nobody → catalin.badea392
No idea how to write a test for this, though.
Attachment #8692207 - Flags: review?(bugs)
Attachment #8692200 - Attachment is obsolete: true
Comment on attachment 8692207 [details] [diff] [review]
Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode windows.

>+already_AddRefed<nsPIDOMWindow>
>+nsContentUtils::FindMostRecentOpenWindow()
>+{
>+  nsCOMPtr<nsIWindowMediator> windowMediator =
>+    do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
>+  nsCOMPtr<nsISimpleEnumerator> windowEnumerator;
>+  windowMediator->GetEnumerator(MOZ_UTF16("navigator:browser"),
>+                                getter_AddRefs(windowEnumerator));
>+
>+  nsCOMPtr<nsPIDOMWindow> latest;
>+  bool hasMore = false;
>+  MOZ_ALWAYS_TRUE(NS_SUCCEEDED(windowEnumerator->HasMoreElements(&hasMore)));
>+  while (hasMore) {
>+    nsCOMPtr<nsISupports> item;
>+    MOZ_ALWAYS_TRUE(NS_SUCCEEDED(windowEnumerator->GetNext(getter_AddRefs(item))));
>+    nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(item);
>+
>+    if (window && !window->Closed()) {
>+      nsCOMPtr<nsIDocShell> docShell = window->GetDocShell();
>+      nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(docShell);
>+
>+      if (loadContext && loadContext->UsePrivateBrowsing() == false) {
So the method name sounds wrong if we have this filtering here.
MostRecentNonPBWindow() ?

But the method doesn't actually return most recent window. It just iterates using the list which
has creation order, as far as I know, and wm->GetMostRecentWindow uses the actual activation timestamp.
(Should have been more careful with Bug 1126245)

Perhaps add a new method to WindowWatcher which does something similar what you're doing in FindMostRecentOpenWindow, but uses timestamps?
Attachment #8692207 - Flags: review?(bugs) → review-
billm, do you recall why you did what you did in bug 1126245?
Flags: needinfo?(wmccloskey)
(In reply to Olli Pettay [:smaug] from comment #3)
> Perhaps add a new method to WindowWatcher
er, WindowMediator
I think I just misread the comment in the IDL file. It says "oldest to youngest", and I interpreted that as least recently used to most recently used.

Anyway, we probably want to use getZOrderDOMWindowEnumerator. I think that picking the topmost non-closed window makes the most sense here.
Flags: needinfo?(wmccloskey)
not sure about that. We should pick the most recently activated window, no?
topmost in z order might not be that window on linux at least.
(In reply to Olli Pettay [:smaug] from comment #7)
> not sure about that. We should pick the most recently activated window, no?
> topmost in z order might not be that window on linux at least.

The comment says GetMostRecentWindow is just a shortcut for getting the first window in front to back order.
And the z-order should be the same as the timestamp order.
(In reply to Cătălin Badea (:catalinb) from comment #8)
> (In reply to Olli Pettay [:smaug] from comment #7)
> > not sure about that. We should pick the most recently activated window, no?
> > topmost in z order might not be that window on linux at least.

Ah, why is that?

I want to avoid doing UUID changes to uplift the patch to aurora.
If you have to avoid uuid changes, you can always add a new simple
interface which extends nsIWindowMediator and add the new method there.
and make WindowMediator to extend that interface and not nsIWindowMeditor.


On linux focused window isn't necessarily the foremost one - depending on window manager settings.
in gnome-tweak-tool FocusMode: Click is the normal, but FocusMode: Mouse gives the mode where
window under mouse is focused, whether or not it is foremost.
Honestly, the window we use is pretty arbitrary here. I think all we care about is that the user should see the new tab appearing. So I think it's okay to use the topmost window even if it's not in focus. The user will still see it.

One issue with the patch in this bug is that we might skip the topmost private window and open the tab in some hidden window. That's not the best UX. Could we maybe bring the window we use to the top?
Using time stamps this time. Note that this patch incurs a small change in the
behaviour of GetMostRecentWindow, now it also skip windowInfo entries with a null
mWindow field. Not sure if this matters or not, I would expect all windowInfos
to have a valid window.
Attachment #8693633 - Flags: review?(bugs)
(In reply to Bill McCloskey (:billm) from comment #11)
> Honestly, the window we use is pretty arbitrary here. I think all we care
> about is that the user should see the new tab appearing. So I think it's
> okay to use the topmost window even if it's not in focus. The user will
> still see it.
One situation where using timestamps might be better is when the user has multiple desktops. Z-ordering
doesn't tell us much here (unless there's a global order maintained by the window manager), but using the most recently activated window might avoid an unexpected desktop switch.

> One issue with the patch in this bug is that we might skip the topmost
> private window and open the tab in some hidden window. That's not the best
> UX. Could we maybe bring the window we use to the top?

Filed bug 1229061. This also affects ServiceWorkerClient.focus().
Comment on attachment 8693633 [details] [diff] [review]
Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode windows.

>+already_AddRefed<nsPIDOMWindow>
>+nsContentUtils::GetMostRecentNonPBWindow()
>+{
>+  nsCOMPtr<nsIWindowMediator> windowMediator =
>+    do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
>+  nsCOMPtr<nsIWindowMediatorBase> windowMediatorBase = do_QueryInterface(windowMediator);
>+
>+  nsCOMPtr<nsIDOMWindow> window;
>+  windowMediatorBase->GetMostRecentNonPBWindow(MOZ_UTF16("navigator:browser"),
>+                                               getter_AddRefs(window));
>+  nsCOMPtr<nsPIDOMWindow> pwindow;
>+  pwindow = do_QueryInterface(window);
>+
>+  return pwindow.forget();
>+}
>+


>+  // Returns the browser window with the most recent time stamp that is
>+  // not in private browsing mode.
>+  static already_AddRefed<nsPIDOMWindow>
>+  GetMostRecentNonPBWindow();
>+

>     if (!parent) {
>-        parent = FindMostRecentOpenWindow();
>+        parent = nsContentUtils::GetMostRecentNonPBWindow();
Now I realized. The old code here is rather broken.
We should use pb window if 
thisTabParent->GetLoadContext()->GetUsePrivateBrowsing
returns true, and non-pb window otherwise.
Feel free to fix here (and rename nsContentUtils::GetMostRecentNonPBWindow to nsContentUtils::GetMostRecentWindow(enum { eNonPBWindow, ePBWindow}) ) or file a followup.



>+++ b/xpfe/appshell/nsIWindowMediatorBase.h
>@@ -0,0 +1,27 @@
>+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
>+/* This Source Code Form is subject to the terms of the Mozilla Public
>+ * License, v. 2.0. If a copy of the MPL was not distributed with this
>+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
>+
>+#ifndef nsWindowMediatorBase_h_
>+#define nsWindowMediatorBase_h_
>+
>+#include "nsIWindowMediator.h"
>+
>+#define NS_IWINDOWMEDIATORBASE_IID \
>+{0x16bab505, 0x06b8, 0x4a02, \
>+  {0x96, 0x38, 0x03, 0x80, 0x8e, 0xab, 0x70, 0x75}}
>+
>+// XXXcatalinb: This class should be merged into nsIWindowMediator.
>+class nsIWindowMediatorBase : public nsIWindowMediator
This is backwards, the name I mean. nsIWindowMediatorBase isn't the base.
And just put the interface to nsIWindowMediator.idl
and call it nsIWindowMediator_44 or some such to hint it is temporary for Aurora only.

[scriptable, uuid(some-uuid-value)]
interface nsIWindowMediator_44 : nsIWindowMediator
{
  nsIDOMWindow getMostRecentNonPBWindow(const char16* aType);
}


>+nsWindowMediator::GetMostRecentNonPBWindow(const char16_t* inType, nsIDOMWindow** outWindow)
new code should use Mozilla coding style, so aType, aWindow 


>+nsWindowMediator::MostRecentWindowInfo(const char16_t* inType, bool aSkipPrivateBrowsing)
> {
>   int32_t       lastTimeStamp = -1;
>   nsAutoString  typeString(inType);
>   bool          allWindows = !inType || typeString.IsEmpty();
> 
>-  // Find the most window with the highest time stamp that matches
>-  // the requested type
>-  nsWindowInfo *searchInfo,
>-               *listEnd,
>-               *foundInfo = nullptr;
>-
>-  searchInfo = mOldestWindow;
>-  listEnd = nullptr;
>-  while (searchInfo != listEnd) {
>-    if ((allWindows || searchInfo->TypeEquals(typeString)) &&
>-        searchInfo->mTimeStamp >= lastTimeStamp) {
>-
>-      foundInfo = searchInfo;
>-      lastTimeStamp = searchInfo->mTimeStamp;
>-    }
>-    searchInfo = searchInfo->mYounger;
>+  // Find the most recent window with the highest time stamp that matches
>+  // the requested type and has the correct browsing mode.
>+  nsWindowInfo* searchInfo = mOldestWindow;
>+  nsWindowInfo* listEnd = nullptr;
Couldn't you drop this variable

>+  nsWindowInfo* foundInfo = nullptr;
>+  for (; searchInfo != listEnd; searchInfo = searchInfo->mYounger) {
and just have for (; searchInfo; ...)


>+    if (aSkipPrivateBrowsing) {
>+      nsCOMPtr<nsIDocShellTreeItem> docShellTreeItem;
>+      searchInfo->mWindow->GetPrimaryContentShell(getter_AddRefs(docShellTreeItem));
>+      nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(docShellTreeItem);
>+      if (!loadContext || loadContext->UsePrivateBrowsing()) {
So this doesn't work in e10s. There is no primarycontentshell there (unless one happens to have non-e10s tabs open).
See what ContentParent::CreateBrowserOrApp does with nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW
Attachment #8693633 - Flags: review?(bugs) → review-
(In reply to Olli Pettay [:smaug] from comment #14)
> Comment on attachment 8693633 [details] [diff] [review]
> Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode
> windows.
> >-    searchInfo = searchInfo->mYounger;
> >+  // Find the most recent window with the highest time stamp that matches
> >+  // the requested type and has the correct browsing mode.
> >+  nsWindowInfo* searchInfo = mOldestWindow;
> >+  nsWindowInfo* listEnd = nullptr;
> Couldn't you drop this variable
> 
> >+  nsWindowInfo* foundInfo = nullptr;
> >+  for (; searchInfo != listEnd; searchInfo = searchInfo->mYounger) {
> and just have for (; searchInfo; ...)
It's a circular list. listEnd becomes non null after the first iteration.

> >+    if (aSkipPrivateBrowsing) {
> >+      nsCOMPtr<nsIDocShellTreeItem> docShellTreeItem;
> >+      searchInfo->mWindow->GetPrimaryContentShell(getter_AddRefs(docShellTreeItem));
> >+      nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(docShellTreeItem);
> >+      if (!loadContext || loadContext->UsePrivateBrowsing()) {
> So this doesn't work in e10s. There is no primarycontentshell there (unless
> one happens to have non-e10s tabs open).
> See what ContentParent::CreateBrowserOrApp does with
> nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW
I just realized it doesn't work on e10s and was about to cancel the review. :)
> It's a circular list. listEnd becomes non null after the first iteration.
I see, silly me. I guess I had cut the assignment already from the diff or something
(In reply to Olli Pettay [:smaug] from comment #14)
> Comment on attachment 8693633 [details] [diff] [review]
> Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode
> windows.
> 
> >+    if (aSkipPrivateBrowsing) {
> >+      nsCOMPtr<nsIDocShellTreeItem> docShellTreeItem;
> >+      searchInfo->mWindow->GetPrimaryContentShell(getter_AddRefs(docShellTreeItem));
> >+      nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(docShellTreeItem);
> >+      if (!loadContext || loadContext->UsePrivateBrowsing()) {
> So this doesn't work in e10s. There is no primarycontentshell there (unless
> one happens to have non-e10s tabs open).
> See what ContentParent::CreateBrowserOrApp does with
> nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW

But it should still have a docshell, which I can QI to a load context, right? I don't
really understand this docshelltreeitem hierarchy. :/ 
Local testing indicates so.
yes, you do have a chrome docshell in parent process.
Attachment #8692207 - Attachment is obsolete: true
Attachment #8693633 - Attachment is obsolete: true
Attachment #8693776 - Flags: review?(bugs)
Comment on attachment 8693776 [details] [diff] [review]
Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode windows.

Ah, this is still broken for single process. Sorry for spam.
Attachment #8693776 - Flags: review?(bugs)
Comment on attachment 8693776 [details] [diff] [review]
Prevent ServiceWorkerClients.OpenWindow from opening tabs in private mode windows.

It was something else: bug 1218080. I just realized that with private browsing,
we might run into that bug on all platforms.
Attachment #8693776 - Flags: review?(bugs)
Blocks: 1229175
Attachment #8693776 - Flags: review?(bugs) → review+
Sorry I saw this so late.  I haven't read through all of the details here, but the algorithm we use on desktop to pick a window for opening a new tab in is <https://dxr.mozilla.org/mozilla-central/source/browser/modules/RecentWindow.jsm#25>.  It would be nice if we unified what this bug implements with that algorithm perhaps by exposing a window mediator API for this and calling that both from C++ and from getMostRecentBrowserWindow().
Hmm, that .jsm doesn't look quite right. It uses z order and what not.
But yeah, we totally should have only one implementation for the functionality.

win.toolbar.visible sounds like a valid check there should be for openWindow.
Attachment #8694933 - Flags: review?(bugs) → review+
(In reply to Olli Pettay [:smaug] from comment #24)
> Hmm, that .jsm doesn't look quite right. It uses z order and what not.

Why is that wrong?

> But yeah, we totally should have only one implementation for the
> functionality.
> 
> win.toolbar.visible sounds like a valid check there should be for openWindow.

Indeed.
Don't you want the window which is focused, which the user is interacting with? On linux topmost window may not be the focused one.
And I don't know how z-order works in case of multiple screens.
(In reply to :Ehsan Akhgari from comment #23)
> Sorry I saw this so late.  I haven't read through all of the details here,
> but the algorithm we use on desktop to pick a window for opening a new tab
> in is
> <https://dxr.mozilla.org/mozilla-central/source/browser/modules/RecentWindow.
> jsm#25>.  It would be nice if we unified what this bug implements with that
> algorithm perhaps by exposing a window mediator API for this and calling
> that both from C++ and from getMostRecentBrowserWindow().

Filing a follow-up for this. RecentWindow.jsm includes some rules that seem wrong to me:

On linux (!macosx && !windows), it tries to use GetMostRecentWindow() (which might return a private
browsing window) and then, if that window is not suitable it will iterate through all windows and pick the newest one, which is not necessarily the most recently used.

For windows and mac it use Z-ordering, but we don't know how that works on multiple desktops. Do you know why Z-ordering was the first choice here?

I think the final solution should be to use activation time in all cases with private browsing check / toolbar visibility.
Blocks: 1230318
Made the same change in a different test.
Attachment #8694933 - Attachment is obsolete: true
Had to back these out for nsWindowMediator.cpp assertions in browser_perf-categories-js-calltree.js 
https://treeherder.mozilla.org/logviewer.html#?job_id=18240386&repo=mozilla-inbound


https://hg.mozilla.org/integration/mozilla-inbound/rev/00a155011747
Flags: needinfo?(catalin.badea392)
(In reply to Wes Kocher (:KWierso) from comment #30)
> Had to back these out for nsWindowMediator.cpp assertions in
> browser_perf-categories-js-calltree.js 
> https://treeherder.mozilla.org/logviewer.html#?job_id=18240386&repo=mozilla-
> inbound
> 
> 
> https://hg.mozilla.org/integration/mozilla-inbound/rev/00a155011747

This was the wrong link to the backout. Actual backout is https://hg.mozilla.org/integration/mozilla-inbound/rev/c6341b8dd280
Looks like devtools needs getMostRecentWindow from the content process. Removing
the parent process assert.

https://dxr.mozilla.org/mozilla-central/source/devtools/client/framework/gDevTools.jsm#696
Attachment #8693776 - Attachment is obsolete: true
Flags: needinfo?(catalin.badea392)
Backed out for almost permafail of M-e10s(2) on Linux debug platforms: https://hg.mozilla.org/integration/mozilla-inbound/rev/5b71c7baa255

Backout job: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=5b71c7baa255
Failing job: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=ad20808dd3c4

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=18324237&repo=mozilla-inbound

00:57:58     INFO -  Assertion failure: (!mDidFakeShow && aRenderFrame) || (mDidFakeShow && !aRenderFrame), at /builds/slave/m-in-lx-d-00000000000000000000/build/src/dom/ipc/TabChild.cpp:1555
00:58:25     INFO -  #01: mozilla::dom::TabChild::RecvShow(mozilla::gfx::IntSizeTyped<mozilla::ScreenPixel> const&, mozilla::dom::ShowInfo const&, mozilla::layers::TextureFactoryIdentifier const&, unsigned long long const&, mozilla::layout::PRenderFrameChild*, bool const&) [dom/ipc/TabChild.cpp:1555]
00:58:25     INFO -  #02: mozilla::dom::TabChild::DoFakeShow(mozilla::layers::TextureFactoryIdentifier const&, unsigned long long const&, mozilla::layout::PRenderFrameChild*, mozilla::dom::ShowInfo const&) [dom/ipc/TabChild.cpp:1447]
00:58:25     INFO -  #03: mozilla::dom::ContentChild::ProvideWindowCommon(mozilla::dom::TabChild*, nsIDOMWindow*, bool, unsigned int, bool, bool, bool, nsIURI*, nsAString_internal const&, nsACString_internal const&, bool*, nsIDOMWindow**) [dom/ipc/ContentChild.cpp:904]
00:58:25     INFO -  #04: mozilla::dom::TabChild::ProvideWindow(nsIDOMWindow*, unsigned int, bool, bool, bool, nsIURI*, nsAString_internal const&, nsACString_internal const&, bool*, nsIDOMWindow**) [dom/ipc/TabChild.cpp:1108]
00:58:25     INFO -  #05: nsWindowWatcher::OpenWindowInternal(nsIDOMWindow*, char const*, char const*, char const*, bool, bool, bool, nsITabParent*, nsIArray*, nsIDOMWindow**) [xpcom/glue/nsCOMPtr.h:1207]
00:58:25     INFO -  #06: nsWindowWatcher::OpenWindow2(nsIDOMWindow*, char const*, char const*, char const*, bool, bool, bool, nsITabParent*, nsISupports*, nsIDOMWindow**) [embedding/components/windowwatcher/nsWindowWatcher.cpp:446]
00:58:25     INFO -  #07: nsGlobalWindow::OpenInternal(nsAString_internal const&, nsAString_internal const&, nsAString_internal const&, bool, bool, bool, bool, bool, nsIArray*, nsISupports*, nsIPrincipal*, JSContext*, nsIDOMWindow**) [dom/base/nsGlobalWindow.cpp:11410]
00:58:25     INFO -  #08: nsGlobalWindow::OpenNoNavigate(nsAString_internal const&, nsAString_internal const&, nsAString_internal const&, nsIDOMWindow**) [dom/base/nsGlobalWindow.cpp:7736]
00:58:25     INFO -  #09: nsDocShell::InternalLoad(nsIURI*, nsIURI*, bool, nsIURI*, unsigned int, nsISupports*, unsigned int, char16_t const*, char const*, nsAString_internal const&, nsIInputStream*, nsIInputStream*, unsigned int, nsISHEntry*, bool, nsAString_internal const&, nsIDocShell*, nsIURI*, nsIDocShell**, nsIRequest**) [docshell/base/nsDocShell.cpp:9719]
00:58:25     INFO -  #10: nsDocShell::OnLinkClickSync(nsIContent*, nsIURI*, char16_t const*, nsAString_internal const&, nsIInputStream*, nsIInputStream*, nsIDocShell**, nsIRequest**) [xpcom/string/nsString.h:55]
00:58:25     INFO -  #11: OnLinkClickEvent::Run() [docshell/base/nsDocShell.cpp:13307]
00:58:25     INFO -  #12: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:964]
00:58:25     INFO -  #13: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/glue/nsThreadUtils.cpp:297]
00:58:25     INFO -  #14: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:96]
00:58:25     INFO -  #15: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:234]
00:58:25     INFO -  #16: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:520]
00:58:25     INFO -  #17: nsBaseAppShell::Run() [widget/nsBaseAppShell.cpp:158]
00:58:25     INFO -  #18: XRE_RunAppShell [toolkit/xre/nsEmbedFunctions.cpp:787]
00:58:25     INFO -  #19: mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:259]
00:58:25     INFO -  #20: MessageLoop::RunInternal() [ipc/chromium/src/base/message_loop.cc:234]
00:58:25     INFO -  #21: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:520]
00:58:25     INFO -  #22: XRE_InitChildProcess [toolkit/xre/nsEmbedFunctions.cpp:627]
00:58:25     INFO -  #23: content_process_main(int, char**) [ipc/contentproc/plugin-container.cpp:238]
00:58:25     INFO -  #24: main [ipc/app/MozillaRuntimeMain.cpp:12]
00:58:25     INFO -  ###!!! [Parent][MessageChannel] Error: (msgtype=0x2A0081,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv
00:58:25     INFO -  ++DOCSHELL 0x96892c00 == 16 [pid = 2724] [id = 29]
00:58:25     INFO -  ++DOMWINDOW == 37 (0x96893c00) [pid = 2724] [serial = 71] [outer = (nil)]
00:58:25     INFO -  [Parent 2724] WARNING: pipe error (48): Connection reset by peer: file /builds/slave/m-in-lx-d-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 459
00:58:25     INFO -  ++DOMWINDOW == 38 (0x99795000) [pid = 2724] [serial = 72] [outer = 0x96893c00]
00:58:25     INFO -  ++DOMWINDOW == 39 (0x98b87800) [pid = 2724] [serial = 73] [outer = 0x96893c00]
00:58:25     INFO -  [Parent 2724] WARNING: RasterImage::Init failed: file /builds/slave/m-in-lx-d-00000000000000000000/build/src/image/ImageFactory.cpp, line 109
00:58:25     INFO -  [Parent 2724] WARNING: Image width or height is non-positive: file /builds/slave/m-in-lx-d-00000000000000000000/build/src/layout/base/nsLayoutUtils.cpp, line 6399
00:58:25     INFO -  [Parent 2724] WARNING: Image width or height is non-positive: file /builds/slave/m-in-lx-d-00000000000000000000/build/src/layout/base/nsLayoutUtils.cpp, line 6399
00:59:04     INFO -  --DOCSHELL 0x9a229800 == 15 [pid = 2724] [id = 22]
00:59:04     INFO -  --DOCSHELL 0xa65dbc00 == 14 [pid = 2724] [id = 26]
00:59:04     INFO -  --DOCSHELL 0xa65dd400 == 13 [pid = 2724] [id = 27]
00:59:04     INFO -  --DOMWINDOW == 38 (0xa4396800) [pid = 2724] [serial = 67] [outer = 0xa65dd000] [url = about:blank]
00:59:04     INFO -  --DOMWINDOW == 37 (0x9f16a400) [pid = 2724] [serial = 57] [outer = 0x9a22c000] [url = about:blank]
00:59:04     INFO -  --DOCSHELL 0xa8e12800 == 12 [pid = 2724] [id = 28]
00:59:04     INFO -  --DOCSHELL 0x9ad24800 == 11 [pid = 2724] [id = 25]
00:59:04     INFO -  --DOCSHELL 0x9a22dc00 == 10 [pid = 2724] [id = 23]
00:59:04     INFO -  --DOCSHELL 0x9ee64800 == 9 [pid = 2724] [id = 24]
00:59:04     INFO -  --DOCSHELL 0x95af8c00 == 8 [pid = 2724] [id = 21]
00:59:04     INFO -  --DOMWINDOW == 36 (0xa65dd000) [pid = 2724] [serial = 63] [outer = (nil)] [url = about:blank]
00:59:04     INFO -  --DOMWINDOW == 35 (0x9a22c000) [pid = 2724] [serial = 53] [outer = (nil)] [url = about:blank]
00:59:04     INFO -  --DOMWINDOW == 34 (0xa9060c00) [pid = 2724] [serial = 68] [outer = 0xa65dd800] [url = about:blank]
00:59:04     INFO -  --DOMWINDOW == 33 (0x9f35b400) [pid = 2724] [serial = 58] [outer = 0x9a22e400] [url = about:blank]
00:59:04     INFO -  ]: ]: --DOMWINDOW == 32 (0x9a22e400) [pid = 2724] [serial = 54] [outer = (nil)] [url = about:blank]
00:59:04     INFO -  --DOMWINDOW == 31 (0xa65dd800) [pid = 2724] [serial = 64] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 30 (0xa8ed3000) [pid = 2724] [serial = 66] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 29 (0x9f0d1800) [pid = 2724] [serial = 56] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 28 (0xa91f9800) [pid = 2724] [serial = 70] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 27 (0xa283ec00) [pid = 2724] [serial = 60] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 26 (0xa90d6800) [pid = 2724] [serial = 69] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 25 (0x9f386c00) [pid = 2724] [serial = 59] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 24 (0x99795000) [pid = 2724] [serial = 72] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 23 (0x96896000) [pid = 2724] [serial = 51] [outer = (nil)] [url = chrome://browser/content/browser.xul]
00:59:08     INFO -  --DOMWINDOW == 22 (0x9da33000) [pid = 2724] [serial = 18] [outer = (nil)] [url = chrome://browser/content/browser.xul]
00:59:08     INFO -  --DOMWINDOW == 21 (0xa8e1a000) [pid = 2724] [serial = 65] [outer = (nil)] [url = about:blank]
00:59:08     INFO -  --DOMWINDOW == 20 (0x9f0b0800) [pid = 2724] [serial = 55] [outer = (nil)] [url = about:blank]
00:59:13     INFO -  --DOMWINDOW == 19 (0x96897000) [pid = 2724] [serial = 52] [outer = (nil)] [url = about:blank]
00:59:13     INFO -  --DOMWINDOW == 18 (0x9da34000) [pid = 2724] [serial = 19] [outer = (nil)] [url = about:blank]
00:59:15     INFO -  --DOMWINDOW == 17 (0x9ee32c00) [pid = 2724] [serial = 61] [outer = (nil)] [url = chrome://browser/content/browser.xul]
00:59:22     INFO -  --DOMWINDOW == 16 (0x9f0afc00) [pid = 2724] [serial = 62] [outer = (nil)] [url = about:blank]
01:04:52     INFO -  1196 INFO Sending click
01:04:52     INFO -  1197 INFO TEST-PASS | dom/html/test/test_window_open_close.html | Didn't crash
01:04:52     INFO -  1198 INFO Sending click
01:04:52     INFO -  1199 INFO TEST-PASS | dom/html/test/test_window_open_close.html | Didn't crash
01:04:52     INFO -  1200 INFO Sending click
01:04:52     INFO -  1201 INFO TEST-PASS | dom/html/test/test_window_open_close.html | Didn't crash
01:04:52  WARNING -  TEST-UNEXPECTED-TIMEOUT | dom/html/test/test_window_open_close.html | application timed out after 330 seconds with no output
01:04:52     INFO -  TEST-INFO | started process screentopng
01:04:53     INFO -  TEST-INFO | screentopng: exit 0
01:04:54     INFO -  TEST-INFO | Main app process: exit 6
01:04:54  WARNING -  TEST-UNEXPECTED-FAIL | dom/html/test/test_window_open_close.html | application terminated with exit code 6
01:04:54     INFO -  runtests.py | Application ran for: 0:17:32.684771
01:04:54     INFO -  zombiecheck | Reading PID log: /tmp/tmpu2ndIipidlog
01:04:54     INFO -  ==> process 2724 launched child process 2781
01:04:54     INFO -  ==> process 2724 launched child process 2880
01:04:54     INFO -  ==> process 2724 launched child process 2889
01:04:54     INFO -  zombiecheck | Checking for orphan process with PID: 2781
01:04:54     INFO -  zombiecheck | Checking for orphan process with PID: 2880
01:04:54     INFO -  zombiecheck | Checking for orphan process with PID: 2889
01:05:14     INFO -  mozcrash Saved minidump as /builds/slave/test/build/blobber_upload_dir/212b2388-6c33-82ad-0a3e4e0a-1209688b.dmp
01:05:14     INFO -  mozcrash Saved app info as /builds/slave/test/build/blobber_upload_dir/212b2388-6c33-82ad-0a3e4e0a-1209688b.extra
01:05:14  WARNING -  PROCESS-CRASH | dom/html/test/test_window_open_close.html | application crashed [@ __kernel_vsyscall + 0x10]
01:05:14     INFO -  Crash dump filename: /tmp/tmpUNsWXj.mozrunner/minidumps/212b2388-6c33-82ad-0a3e4e0a-1209688b.dmp
01:05:14     INFO -  Operating system: Linux
01:05:14     INFO -                    0.0.0 Linux 3.2.0-76-generic-pae #111-Ubuntu SMP Tue Jan 13 22:34:29 UTC 2015 i686
01:05:14     INFO -  CPU: x86
01:05:14     INFO -       GenuineIntel family 6 model 62 stepping 4
01:05:14     INFO -       1 CPU
01:05:14     INFO -  Crash reason:  SIGABRT
01:05:14     INFO -  Crash address: 0x764
01:05:14     INFO -  Process uptime: not available
01:05:14     INFO -  Thread 0 (crashed)
01:05:14     INFO -   0  linux-gate.so!__kernel_vsyscall + 0x10
01:05:14     INFO -      eip = 0xb76e6424   esp = 0xbfdee9a0   ebp = 0xbfdeea18   ebx = 0x967700d0
01:05:14     INFO -      esi = 0x00000000   edi = 0xb7572ff4   eax = 0xfffffffc   ecx = 0x00000006
01:05:14     INFO -      edx = 0xffffffff   efl = 0x00200282
01:05:14     INFO -      Found by: given as instruction pointer in context
01:05:14     INFO -   1  libc-2.15.so!__poll [poll.c : 87 + 0xe]
01:05:14     INFO -      eip = 0xb74ad170   esp = 0xbfdee9b0   ebp = 0xbfdeea18   ebx = 0x967700d0
01:05:14     INFO -      esi = 0x00000000   edi = 0xb7572ff4
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   2  libglib-2.0.so.0.3200.1!g_main_context_iterate [gmain.c : 3417 + 0x13]
01:05:14     INFO -      eip = 0xb63e606e   esp = 0xbfdeea20   ebp = 0x967700d0
01:05:14     INFO -      Found by: previous frame's frame pointer
01:05:14     INFO -   3  libglib-2.0.so.0.3200.1!g_main_context_iteration [gmain.c : 3184 + 0x17]
01:05:14     INFO -      eip = 0xb63e61c1   esp = 0xbfdeea80   ebp = 0xbfdeeab8   ebx = 0xb6496ff4
01:05:14     INFO -      esi = 0xb71296a0   edi = 0x00000000
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   4  libxul.so!nsAppShell::ProcessNextNativeEvent(bool) [nsAppShell.cpp:ad20808dd3c4 : 212 + 0xc]
01:05:14     INFO -      eip = 0xb271fc54   esp = 0xbfdeeaa0   ebp = 0xbfdeeab8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xa9bfdd80   edi = 0x00000000
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   5  libxul.so!nsBaseAppShell::DoProcessNextNativeEvent(bool) [nsBaseAppShell.cpp:ad20808dd3c4 : 138 + 0xd]
01:05:14     INFO -      eip = 0xb26f9c6a   esp = 0xbfdeeac0   ebp = 0xbfdeeae8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xa9bfdd80   edi = 0x00000000
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   6  libxul.so!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool) [nsBaseAppShell.cpp:ad20808dd3c4 : 289 + 0xd]
01:05:14     INFO -      eip = 0xb26fd94f   esp = 0xbfdeeaf0   ebp = 0xbfdeeb28   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xa9bfdd80   edi = 0x002b93cf
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   7  libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:ad20808dd3c4 : 933 + 0x1b]
01:05:14     INFO -      eip = 0xb0c7ea13   esp = 0xbfdeeb30   ebp = 0xbfdeeba8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xb7137ca0   edi = 0xbfdeeb70
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   8  libxul.so!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:ad20808dd3c4 : 297 + 0x10]
01:05:14     INFO -      eip = 0xb0caabbf   esp = 0xbfdeebb0   ebp = 0xbfdeebe8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xb71fdb80   edi = 0xb71268a0
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -   9  libxul.so!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [MessagePump.cpp:ad20808dd3c4 : 127 + 0xc]
01:05:14     INFO -      eip = 0xb0f6f3f8   esp = 0xbfdeebf0   ebp = 0xbfdeec38   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xb71fdb80   edi = 0xb71268a0
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  10  libxul.so!MessageLoop::RunInternal() [message_loop.cc:ad20808dd3c4 : 234 + 0x14]
01:05:14     INFO -      eip = 0xb0f47da0   esp = 0xbfdeec40   ebp = 0xbfdeec68   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xb71268a0   edi = 0xb7137ca0
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  11  libxul.so!MessageLoop::Run() [message_loop.cc:ad20808dd3c4 : 227 + 0x8]
01:05:14     INFO -      eip = 0xb0f47dc6   esp = 0xbfdeec70   ebp = 0xbfdeec98   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xb71268a0   edi = 0xb7137ca0
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  12  libxul.so!nsBaseAppShell::Run() [nsBaseAppShell.cpp:ad20808dd3c4 : 156 + 0xe]
01:05:14     INFO -      eip = 0xb26f80e5   esp = 0xbfdeeca0   ebp = 0xbfdeecc8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xa9bfdd80   edi = 0xb7137ca0
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  13  libxul.so!nsAppStartup::Run() [nsAppStartup.cpp:ad20808dd3c4 : 281 + 0x9]
01:05:14     INFO -      eip = 0xb2f0a1c2   esp = 0xbfdeecd0   ebp = 0xbfdeece8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xa911c760   edi = 0xbfdeef59
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  14  libxul.so!XREMain::XRE_mainRun() [nsAppRunner.cpp:ad20808dd3c4 : 4290 + 0x17]
01:05:14     INFO -      eip = 0xb2f5d9bd   esp = 0xbfdeecf0   ebp = 0xbfdeedd8   ebx = 0xb602258c
01:05:14     INFO -      esi = 0x00000000   edi = 0xbfdeef59
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  15  libxul.so!XREMain::XRE_main(int, char**, nsXREAppData const*) [nsAppRunner.cpp:ad20808dd3c4 : 4383 + 0x9]
01:05:14     INFO -      eip = 0xb2f60740   esp = 0xbfdeede0   ebp = 0xbfdeee28   ebx = 0xb602258c
01:05:14     INFO -      esi = 0xbfdeee60   edi = 0xbfdeee78
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  16  libxul.so!XRE_main [nsAppRunner.cpp:ad20808dd3c4 : 4485 + 0xf]
01:05:14     INFO -      eip = 0xb2f60995   esp = 0xbfdeee30   ebp = 0xbfdeef68   ebx = 0x080712b4
01:05:14     INFO -      esi = 0xbfdeee60   edi = 0xb712e600
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  17  firefox!do_main [nsBrowserApp.cpp:ad20808dd3c4 : 212 + 0x6]
01:05:14     INFO -      eip = 0x0804d200   esp = 0xbfdeef70   ebp = 0xbfdeffc8   ebx = 0x080712b4
01:05:14     INFO -      esi = 0xbfdf0164   edi = 0xb712e600
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  18  firefox!main [nsBrowserApp.cpp:ad20808dd3c4 : 352 + 0x16]
01:05:14     INFO -      eip = 0x0804c5bb   esp = 0xbfdeffd0   ebp = 0xbfdf00b8   ebx = 0x080712b4
01:05:14     INFO -      esi = 0xbfdf0164   edi = 0x00000000
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  19  libc-2.15.so!__libc_start_main [libc-start.c : 226 + 0x1f]
01:05:14     INFO -      eip = 0xb73e54d3   esp = 0xbfdf00c0   ebp = 0x00000000
01:05:14     INFO -      Found by: previous frame's frame pointer
01:05:14     INFO -  20  firefox!__libc_csu_fini + 0x10
01:05:14     INFO -      eip = 0x08067960   esp = 0xbfdf00c4   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  21  libc-2.15.so!__libc_start_main [libc-start.c : 226 + 0x1f]
01:05:14     INFO -      eip = 0xb73e54d3   esp = 0xbfdf00d0   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  22  firefox + 0x47d8
01:05:14     INFO -      eip = 0x0804c7d8   esp = 0xbfdf0120   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  23  libc-2.15.so!__libc_start_main [libc-start.c : 96 + 0x9]
01:05:14     INFO -      eip = 0xb73e53e9   esp = 0xbfdf012c   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  24  firefox + 0x47d8
01:05:14     INFO -      eip = 0x0804c7d8   esp = 0xbfdf0138   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  25  firefox!_start + 0x21
01:05:14     INFO -      eip = 0x0804c7f9   esp = 0xbfdf0140   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  26  firefox!_init + 0x734
01:05:14     INFO -      eip = 0x0804c4d0   esp = 0xbfdf0144   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  27  firefox!__libc_csu_fini + 0x10
01:05:14     INFO -      eip = 0x08067960   esp = 0xbfdf0150   ebp = 0x00000000
01:05:14     INFO -      Found by: call frame info
01:05:14     INFO -  28  firefox!mozilla::ReadAheadFile(char const*, unsigned int, unsigned int, int*) [FileUtils.cpp:ad20808dd3c4 : 538 + 0x8]
01:05:14     INFO -      eip = 0x08067950   esp = 0xbfdf0154   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
01:05:14     INFO -  29  ld-2.15.so + 0xf280
01:05:14     INFO -      eip = 0xb76f6280   esp = 0xbfdf0158   ebp = 0x00000000
01:05:14     INFO -      Found by: stack scanning
Flags: needinfo?(catalin.badea392)
Flags: needinfo?(catalin.badea392)
Attachment #8697053 - Flags: review?(bugs)
Attachment #8697053 - Flags: review?(bugs) → review+
You need to log in before you can comment on or make changes to this bug.