Closed Bug 1228937 Opened 9 years ago Closed 6 years ago

"Assertion failure: gFactoryOps->IsEmpty()" with lots of deleteDatabase

Categories

(Core :: Storage: IndexedDB, defect, P5)

defect

Tracking

()

RESOLVED FIXED
Tracking Status
firefox45 --- affected
firefox-esr60 --- unaffected
firefox65 --- unaffected

People

(Reporter: jruderman, Unassigned)

References

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached file testcase
Assertion failure: gFactoryOps->IsEmpty(), at dom/indexedDB/ActorsParent.cpp:12757 (Easier to reproduce with a debug+opt build from Tinderbox than with a local debug build?)
Attached file stack
As sorta covered on bug 1246828 comment 12, either: - Factory::ActorDestroy should stop trying to (synchronously) clean up when it hits zero live factories. - FactoryOp::ActorDestroy should synchronously clean itself up This is necessary because Factory manages the FactoryOps and they're all destroyed synchronously with no turns of the event loop in-between. Because the factory ops have the added complexity of their mDelayedOp mechanism, modifying factory may be the cleanest option. While it could use a runnable that waits on the gFactoryOps to complete, its data structures seem relatively minimal and so it might make sense to move their destruction to the IDB quota client shutdown since that's a reasonable shutdown boundary.
Andrew, thanks for this analysis!
(In reply to Andrew Sutherland [:asuth] from comment #2) > As sorta covered on bug 1246828 comment 12, either: > - Factory::ActorDestroy should stop trying to (synchronously) clean up when > it hits zero live factories. > - FactoryOp::ActorDestroy should synchronously clean itself up > > This is necessary because Factory manages the FactoryOps and they're all > destroyed synchronously with no turns of the event loop in-between. Because > the factory ops have the added complexity of their mDelayedOp mechanism, > modifying factory may be the cleanest option. While it could use a runnable > that waits on the gFactoryOps to complete, its data structures seem > relatively minimal and so it might make sense to move their destruction to > the IDB quota client shutdown since that's a reasonable shutdown boundary. I fully agree, we had a synchronous cleanup in FactoryOp::ActoryDestroy(), but it was a huge pain in the ass, so we removed it. I'll try to move Factory::ActoryDestroy cleanup to the quota client shutdown. Thanks again!.
This will be fixed by bug 1246828.
Depends on: 1246828
Bug 1246828 is now fixed. Jesse, could you be so kind as to verify this is now fixed (Jan was telling me he had a hard time reproducing)?
Flags: needinfo?(jruderman)
Status: NEW → UNCONFIRMED
Ever confirmed: false
Priority: -- → P5
Assuming FIXED by bug 1246828 as per comment 5.
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Flags: needinfo?(jruderman)
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: