Closed Bug 829191 Opened 11 years ago Closed 11 years ago

logic error with nsHTMLMediaElement::mEventDeliveryPaused (?)

Categories

(Core :: Audio/Video, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla21

People

(Reporter: froydnj, Assigned: kinetik)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Running tests with the patches for bug 715376 applied turns up the following assert:

###!!! ASSERTION: Must not be in bfcache when dispatching pending media events: '!mEventDeliveryPaused', file /home/froydnj/src/mozilla-central-official/content/html/content/src/nsHTMLMediaElement.cpp, line 3036
nsHTMLMediaElement::DispatchPendingMediaEvents() (/home/froydnj/src/mozilla-central-official/content/html/content/src/nsHTMLMediaElement.cpp:3038)
nsHTMLMediaElement::SuspendOrResumeElement(bool, bool) (/home/froydnj/src/mozilla-central-official/content/html/content/src/nsHTMLMediaElement.cpp:3118)
nsHTMLMediaElement::NotifyOwnerDocumentActivityChanged() (/home/froydnj/src/mozilla-central-official/content/html/content/src/nsHTMLMediaElement.cpp:3143)
NotifyActivityChanged (/home/froydnj/src/mozilla-central-official/content/base/src/nsDocument.cpp:4012)
EnumerateFreezables (/home/froydnj/src/mozilla-central-official/content/base/src/nsDocument.cpp:8529)
nsTHashtable<nsPtrHashKey<nsIContent> >::s_EnumStub(PLDHashTable*, PLDHashEntryHdr*, unsigned int, void*) (/opt/build/froydnj/debug-mc/content/base/src/../../../dist/include/nsTHashtable.h:487)
PL_DHashTableEnumerate (/opt/build/froydnj/debug-mc/xpcom/build/pldhash.cpp:717)
nsTHashtable<nsPtrHashKey<nsIContent> >::EnumerateEntries(PLDHashOperator (*)(nsPtrHashKey<nsIContent>*, void*), void*) (/opt/build/froydnj/debug-mc/content/base/src/../../../dist/include/nsTHashtable.h:238)
nsIDocument::EnumerateFreezableElements(void (*)(nsIContent*, void*), void*) (/home/froydnj/src/mozilla-central-official/content/base/src/nsDocument.cpp:8539)
nsDocument::OnPageShow(bool, nsIDOMEventTarget*) (/home/froydnj/src/mozilla-central-official/content/base/src/nsDocument.cpp:7822)
nsDocumentViewer::LoadComplete(tag_nsresult) (/home/froydnj/src/mozilla-central-official/layout/base/nsDocumentViewer.cpp:1065)
nsDocShell::EndPageLoad(nsIWebProgress*, nsIChannel*, tag_nsresult) (/home/froydnj/src/mozilla-central-official/docshell/base/nsDocShell.cpp:6533)
nsDocShell::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, tag_nsresult) (/home/froydnj/src/mozilla-central-official/docshell/base/nsDocShell.cpp:6360)
nsDocLoader::DoFireOnStateChange(nsIWebProgress*, nsIRequest*, int&, tag_nsresult) (/home/froydnj/src/mozilla-central-official/uriloader/base/nsDocLoader.cpp:1305)
nsDocLoader::doStopDocumentLoad(nsIRequest*, tag_nsresult) (/home/froydnj/src/mozilla-central-official/uriloader/base/nsDocLoader.cpp:884)
nsDocLoader::DocLoaderIsEmpty(bool) (/home/froydnj/src/mozilla-central-official/uriloader/base/nsDocLoader.cpp:777)
nsDocLoader::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (/home/froydnj/src/mozilla-central-official/uriloader/base/nsDocLoader.cpp:662)
nsLoadGroup::RemoveRequest(nsIRequest*, nsISupports*, tag_nsresult) (/home/froydnj/src/mozilla-central-official/netwerk/base/src/nsLoadGroup.cpp:676)
nsDocShell::FinishRestore() (/home/froydnj/src/mozilla-central-official/docshell/base/nsDocShell.cpp:7208)
nsDocShell::RestoreFromHistory() (/home/froydnj/src/mozilla-central-official/docshell/base/nsDocShell.cpp:7737)
nsDocShell::RestorePresentationEvent::Run() (/home/froydnj/src/mozilla-central-official/docshell/base/nsDocShell.cpp:7114)
nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/mozilla-central-official/xpcom/threads/nsThread.cpp:627)
NS_ProcessNextEvent_P(nsIThread*, bool) (/opt/build/froydnj/debug-mc/xpcom/build/nsThreadUtils.cpp:238)
mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (/home/froydnj/src/mozilla-central-official/ipc/glue/MessagePump.cpp:82)
MessageLoop::RunInternal() (/home/froydnj/src/mozilla-central-official/ipc/chromium/src/base/message_loop.cc:216)
MessageLoop::RunHandler() (/home/froydnj/src/mozilla-central-official/ipc/chromium/src/base/message_loop.cc:209)
MessageLoop::Run() (/home/froydnj/src/mozilla-central-official/ipc/chromium/src/base/message_loop.cc:182)
nsBaseAppShell::Run() (/home/froydnj/src/mozilla-central-official/widget/xpwidgets/nsBaseAppShell.cpp:165)
nsAppStartup::Run() (/home/froydnj/src/mozilla-central-official/toolkit/components/startup/nsAppStartup.cpp:288)
XREMain::XRE_mainRun() (/home/froydnj/src/mozilla-central-official/toolkit/xre/nsAppRunner.cpp:3823)
XREMain::XRE_main(int, char**, nsXREAppData const*) (/home/froydnj/src/mozilla-central-official/toolkit/xre/nsAppRunner.cpp:3890)
XRE_main (/home/froydnj/src/mozilla-central-official/toolkit/xre/nsAppRunner.cpp:4093)
do_main (/home/froydnj/src/mozilla-central-official/browser/app/nsBrowserApp.cpp:195)
main (/home/froydnj/src/mozilla-central-official/browser/app/nsBrowserApp.cpp:388)
__libc_start_main+0x000000FD  (/lib/libc.so.6)
_start (/opt/build/froydnj/debug-mc/dist/bin/firefox-bin)

But if we're calling DispatchPendingEvents from there, mEventDeliveryPaused must necessarily be true:

http://mxr.mozilla.org/mozilla-central/source/content/html/content/src/nsHTMLMediaElement.cpp#3116

This code was added in bug 815569.  Is the code doing something wrong, or is something wrong with my patches, or possibly both?
Yeah, I think we need to set mEventDeliveryPaused = false before calling DispatchPendingMediaEvents.
Assignee: nobody → kinetik
Status: NEW → ASSIGNED
Attached patch patch v0Splinter Review
Attachment #701621 - Flags: review?(roc)
https://hg.mozilla.org/mozilla-central/rev/2dae840fd362
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla21
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: