Closed
Bug 1143192
Opened 9 years ago
Closed 9 years ago
Assertions in DOM cache code after running tests
Categories
(Core :: DOM: Core & HTML, defect)
Tracking
()
RESOLVED
FIXED
mozilla39
Tracking | Status | |
---|---|---|
firefox39 | --- | fixed |
People
(Reporter: ehsan.akhgari, Assigned: bkelly)
Details
Attachments
(1 file)
10.03 KB,
patch
|
ehsan.akhgari
:
review+
|
Details | Diff | Splinter Review |
I just got the following assertions after running ./mach mochitest dom/cache with a patch that I will attach shortly during the browser shutdown: [787] ###!!! ASSERTION: Calling GetOrCreate() after shutdown!: 'Error', file /Users/ehsan/moz/src/dom/quota/QuotaManager.cpp, line 1298 #01: mozilla::dom::quota::QuotaManager::GetOrCreate() (QuotaManager.cpp:1299, in XUL) #02: mozilla::dom::cache::Context::QuotaInitRunnable::Run() (Context.cpp:216, in XUL) #03: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:856, in XUL) #04: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:265, in XUL) #05: mozilla::dom::cache::Manager::ShutdownAllOnMainThread() (Manager.cpp:1394, in XUL) #06: (anonymous namespace)::CacheQuotaClient::ShutdownTransactionService() (QuotaClient.cpp:191, in XUL) #07: mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:2943, in XUL) #08: non-virtual thunk to mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:3014, in XUL) #09: nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverList.cpp:100, in XUL) #10: nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverService.cpp:329, in XUL) #11: nsXREDirProvider::DoShutdown() (nsXREDirProvider.cpp:905, in XUL) #12: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1354, in XUL) #13: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1362, in XUL) #14: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:4305, in XUL) #15: XRE_main (nsAppRunner.cpp:4498, in XUL) #16: do_main(int, char**, nsIFile*) (nsBrowserApp.cpp:294, in firefox) #17: main (nsBrowserApp.cpp:667, in firefox) --DOMWINDOW == 34 (0x1198ef400) [pid = 787] [serial = 48] [outer = 0x0] [url = http://mochi.test:8888/tests/dom/cache/test/mochitest/message_receiver.html] --DOMWINDOW == 33 (0x11ce66900) [pid = 787] [serial = 51] [outer = 0x0] [url = about:blank] --DOMWINDOW == 32 (0x11ce66c80) [pid = 787] [serial = 53] [outer = 0x0] [url = about:blank] --DOMWINDOW == 31 (0x11ce63100) [pid = 787] [serial = 52] [outer = 0x0] [url = http://mochi.test:8888/tests/dom/cache/test/mochitest/frame.html] --DOMWINDOW == 30 (0x11ce65b00) [pid = 787] [serial = 50] [outer = 0x0] [url = http://mochi.test:8888/tests/dom/cache/test/mochitest/frame.html] --DOMWINDOW == 29 (0x128b70000) [pid = 787] [serial = 9] [outer = 0x1212b0400] [url = about:blank] --DOMWINDOW == 28 (0x128c35b80) [pid = 787] [serial = 10] [outer = 0x1201b4580] [url = about:blank] --DOMWINDOW == 27 (0x1198eed00) [pid = 787] [serial = 23] [outer = 0x11c93ab80] [url = about:blank] [787] ###!!! ASSERTION: Empty origin/pattern!: '!aOriginOrPattern.IsEmpty() || aOriginOrPattern.IsNull()', file /Users/ehsan/moz/src/dom/quota/QuotaManager.cpp, line 1824 #01: mozilla::dom::quota::QuotaManager::AllowNextSynchronizedOp(mozilla::dom::quota::OriginOrPatternString const&, mozilla::dom::Nullable<mozilla::dom::quota::PersistenceType>, nsACString_internal const&) (QuotaManager.cpp:1823, in XUL) #02: (anonymous namespace)::QuotaReleaseRunnable::Run() (Context.cpp:44, in XUL) #03: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:856, in XUL) #04: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:265, in XUL) #05: nsThread::Shutdown() (nsThread.cpp:663, in XUL) #06: mozilla::LazyIdleThread::ShutdownThread() (LazyIdleThread.cpp:309, in XUL) #07: mozilla::LazyIdleThread::Shutdown() (LazyIdleThread.cpp:454, in XUL) #08: mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:2964, in XUL) #09: non-virtual thunk to mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:3014, in XUL) #10: nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverList.cpp:100, in XUL) #11: nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverService.cpp:329, in XUL) #12: nsXREDirProvider::DoShutdown() (nsXREDirProvider.cpp:905, in XUL) #13: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1354, in XUL) #14: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1362, in XUL) #15: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:4305, in XUL) #16: XRE_main (nsAppRunner.cpp:4498, in XUL) #17: do_main(int, char**, nsIFile*) (nsBrowserApp.cpp:294, in firefox) #18: main (nsBrowserApp.cpp:667, in firefox) [787] ###!!! ASSERTION: Why didn't we find a SynchronizedOp?: 'Not Reached', file /Users/ehsan/moz/src/dom/quota/QuotaManager.cpp, line 1846 #01: mozilla::dom::quota::QuotaManager::AllowNextSynchronizedOp(mozilla::dom::quota::OriginOrPatternString const&, mozilla::dom::Nullable<mozilla::dom::quota::PersistenceType>, nsACString_internal const&) (QuotaManager.cpp:1847, in XUL) #02: (anonymous namespace)::QuotaReleaseRunnable::Run() (Context.cpp:44, in XUL) #03: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:856, in XUL) #04: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:265, in XUL) #05: nsThread::Shutdown() (nsThread.cpp:663, in XUL) #06: mozilla::LazyIdleThread::ShutdownThread() (LazyIdleThread.cpp:309, in XUL) #07: mozilla::LazyIdleThread::Shutdown() (LazyIdleThread.cpp:454, in XUL) #08: mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:2964, in XUL) #09: non-virtual thunk to mozilla::dom::quota::QuotaManager::Observe(nsISupports*, char const*, char16_t const*) (QuotaManager.cpp:3014, in XUL) #10: nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverList.cpp:100, in XUL) #11: nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) (nsObserverService.cpp:329, in XUL) #12: nsXREDirProvider::DoShutdown() (nsXREDirProvider.cpp:905, in XUL) #13: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1354, in XUL) #14: ScopedXPCOMStartup::~ScopedXPCOMStartup() (nsAppRunner.cpp:1362, in XUL) #15: XREMain::XRE_main(int, char**, nsXREAppData const*) (nsAppRunner.cpp:4305, in XUL) #16: XRE_main (nsAppRunner.cpp:4498, in XUL) #17: do_main(int, char**, nsIFile*) (nsBrowserApp.cpp:294, in firefox) #18: main (nsBrowserApp.cpp:667, in firefox) Running the tests again, I don't get the assertion. Ben, do you mind taking a look please?
Flags: needinfo?(bkelly)
Reporter | ||
Comment 1•9 years ago
|
||
The patch mentioned in comment 0 is attachment 8577486 [details] [diff] [review]. This was on inbound after landing my cache stuff from earlier today.
Assignee | ||
Comment 2•9 years ago
|
||
We should not open a new Context() here. I'll take a look.
Assignee: nobody → bkelly
Status: NEW → ASSIGNED
Flags: needinfo?(bkelly)
Assignee | ||
Comment 3•9 years ago
|
||
Actually, I think this is a case where we have queued up a Context::QuotaInitRunnable on the main thread, but its in the queue behind the QM's shutdown event. So we clean up everything and then that runnable executes and tries to open QM again. We need to check a cancellation flag in QuotaInitRunnable::Run().
Assignee | ||
Comment 4•9 years ago
|
||
This adds a cancellation path to the Context::QuotaInitRunnable. Since each step of the runnable is synchronous I just use an atomic flag here. Also, fix up some stale strings in NS_ASSERT_OWNINGTHREAD() from my last patch.
Attachment #8582669 -
Flags: review?(ehsan)
Reporter | ||
Updated•9 years ago
|
Attachment #8582669 -
Flags: review?(ehsan) → review+
Assignee | ||
Comment 5•9 years ago
|
||
remote: https://hg.mozilla.org/integration/mozilla-inbound/rev/203991c8a8fc
Comment 6•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/203991c8a8fc
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
status-firefox39:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla39
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•