Closed
Bug 1221992
Opened 9 years ago
Closed 9 years ago
clients.openWindow opens tabs in the private window
Categories
(Core :: DOM: Notifications, defect)
Core
DOM: Notifications
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)
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
smaug
:
review+
|
Details | Diff | Splinter Review |
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 | ||
Updated•9 years ago
|
Assignee: nobody → catalin.badea392
Assignee | ||
Comment 1•9 years ago
|
||
Assignee | ||
Comment 2•9 years ago
|
||
No idea how to write a test for this, though.
Attachment #8692207 -
Flags: review?(bugs)
Assignee | ||
Updated•9 years ago
|
Attachment #8692200 -
Attachment is obsolete: true
Comment 3•9 years ago
|
||
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-
Comment 4•9 years ago
|
||
billm, do you recall why you did what you did in bug 1126245?
Flags: needinfo?(wmccloskey)
Comment 5•9 years ago
|
||
(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)
Comment 7•9 years ago
|
||
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.
Assignee | ||
Comment 8•9 years ago
|
||
(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.
Assignee | ||
Comment 9•9 years ago
|
||
(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.
Comment 10•9 years ago
|
||
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?
Assignee | ||
Comment 12•9 years ago
|
||
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)
Assignee | ||
Comment 13•9 years ago
|
||
(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 14•9 years ago
|
||
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-
Assignee | ||
Comment 15•9 years ago
|
||
(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. :)
Comment 16•9 years ago
|
||
> 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
Assignee | ||
Comment 17•9 years ago
|
||
(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.
Comment 18•9 years ago
|
||
yes, you do have a chrome docshell in parent process.
Assignee | ||
Comment 19•9 years ago
|
||
Attachment #8692207 -
Attachment is obsolete: true
Attachment #8693633 -
Attachment is obsolete: true
Attachment #8693776 -
Flags: review?(bugs)
Assignee | ||
Comment 20•9 years ago
|
||
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)
Assignee | ||
Comment 21•9 years ago
|
||
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)
Updated•9 years ago
|
Attachment #8693776 -
Flags: review?(bugs) → review+
Assignee | ||
Comment 22•9 years ago
|
||
Attachment #8694933 -
Flags: review?(bugs)
Comment 23•9 years ago
|
||
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().
Comment 24•9 years ago
|
||
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.
Updated•9 years ago
|
Attachment #8694933 -
Flags: review?(bugs) → review+
Comment 25•9 years ago
|
||
(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.
Comment 26•9 years ago
|
||
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.
Assignee | ||
Comment 27•9 years ago
|
||
(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.
Assignee | ||
Comment 28•9 years ago
|
||
Made the same change in a different test.
Attachment #8694933 -
Attachment is obsolete: true
Comment 29•9 years ago
|
||
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
Assignee | ||
Comment 32•9 years ago
|
||
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
Comment 33•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Flags: needinfo?(catalin.badea392)
Comment 34•9 years ago
|
||
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)
Assignee | ||
Comment 35•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Flags: needinfo?(catalin.badea392)
Attachment #8697053 -
Flags: review?(bugs)
Assignee | ||
Comment 36•9 years ago
|
||
Updated•9 years ago
|
Attachment #8697053 -
Flags: review?(bugs) → review+
Comment 37•9 years ago
|
||
Comment 38•9 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/25e2b2725a54
https://hg.mozilla.org/mozilla-central/rev/7f5522ec5850
https://hg.mozilla.org/mozilla-central/rev/f8931d8e5e46
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in
before you can comment on or make changes to this bug.
Description
•