Closed Bug 1221992 Opened 9 years ago Closed 9 years ago

clients.openWindow opens tabs in the private window

Categories

(Core :: DOM: Notifications, defect)

defect
Not set
normal

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+
Attachment #8694933 - Flags: review?(bugs)
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
(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+
Depends on: 1445792
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: