Closed Bug 1159496 Opened 9 years ago Closed 9 years ago

test_dormant_playback.html asserts on mac

Categories

(Core :: Audio/Video, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla40
Tracking Status
firefox40 --- fixed

People

(Reporter: bholley, Assigned: jya)

References

Details

(Keywords: regression)

Attachments

(1 file, 2 obsolete files)

It looks like dormant mode is prefed on for mac, but the test is still windows/gonk only (if we're shipping this code, we should get the test turned on pronto). When I turn the test on, I get the following assertion:

    Assertion failure: !mConverter, at /files/mozilla/repos/cc/dom/media/fmp4/apple/AppleATDecoder.cpp:55
    #01: mozilla::AppleATDecoder::~AppleATDecoder() (AppleATDecoder.cpp:55, in XUL)
    #02: mozilla::AppleATDecoder::~AppleATDecoder() (AppleATDecoder.cpp:56, in XUL)
    #03: mozilla::AppleATDecoder::~AppleATDecoder() (AppleATDecoder.cpp:53, in XUL)
    #04: mozilla::MediaDataDecoder::Release() (PlatformDecoderModule.h:205, in XUL)
    #05: nsRefPtr<mozilla::MediaDataDecoder>::assign_assuming_AddRef(mozilla::MediaDataDecoder*) (nsRefPtr.h:53, in XUL)
    #06: nsRefPtr<mozilla::MediaDataDecoder>& nsRefPtr<mozilla::MediaDataDecoder>::operator=<mozilla::MediaDataDecoder>(already_AddRefed<mozilla::MediaDataDecoder>&&) (nsRefPtr.h:163, in XUL)
    #07: mozilla::MP4Reader::EnsureDecodersSetup() (MP4Reader.cpp:556, in XUL)
    #08: mozilla::MP4Reader::ReadMetadata(mozilla::MediaInfo*, nsDataHashtable<nsCStringHashKey, nsCString>**) (MP4Reader.cpp:483, in XUL)
    #09: mozilla::MediaDecoderReader::CallReadMetadata() (MediaDecoderReader.cpp:221, in XUL)
    #10: mozilla::detail::MethodCallWithNoArgs<mozilla::MediaPromise<nsRefPtr<mozilla::MetadataHolder>, mozilla::ReadMetadataFailureReason, true>, mozilla::MediaDecoderReader>::Invoke() (MediaPromise.h:590, in XUL)
    #11: mozilla::detail::ProxyRunnable<mozilla::MediaPromise<nsRefPtr<mozilla::MetadataHolder>, mozilla::ReadMetadataFailureReason, true> >::Run() (MediaPromise.h:634, in XUL)
    #12: mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run() (TaskDispatcher.h:177, in XUL)
    #13: mozilla::MediaTaskQueue::Runner::Run() (MediaTaskQueue.cpp:252, in XUL)
    #14: nsThreadPool::Run() (nsThreadPool.cpp:225, in XUL)
    #15: non-virtual thunk to nsThreadPool::Run() (nsThreadPool.cpp:239, in XUL)
    #16: nsThread::ProcessNextEvent(bool, bool*) (nsThread.cpp:869, in XUL)
    #17: NS_ProcessNextEvent(nsIThread*, bool) (nsThreadUtils.cpp:265, in XUL)
    #18: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) (MessagePump.cpp:356, in XUL)
    #19: MessageLoop::RunInternal() (message_loop.cc:234, in XUL)
    #20: MessageLoop::RunHandler() (message_loop.cc:227, in XUL)
    #21: MessageLoop::Run() (message_loop.cc:200, in XUL)
    #22: nsThread::ThreadFunc(void*) (nsThread.cpp:366, in XUL)
    #23: _pt_root (ptthread.c:215, in libnss3.dylib)
    #24: _pthread_body (in libsystem_pthread.dylib) + 131
    #25: _pthread_body (in libsystem_pthread.dylib) + 0
    TEST-INFO | Main app process: killed by SIGHUP
    TEST-UNEXPECTED-FAIL | dom/media/test/test_dormant_playback.html | application terminated with exit code 1
    runtests.py | Application ran for: 0:00:34.835815
    zombiecheck | Reading PID log: /var/folders/1p/xs6f7dfn0dncxwzhl7jhnhjh0000gn/T/tmpOWlDIlpidlog
    PROCESS-CRASH | dom/media/test/test_dormant_playback.html | application crashed [@ XUL + 0x3131d92]
Flags: needinfo?(jyavenard)
The regression was introduced in bug 1132832.
When going into dormant mode, the video decoder is shutdown and unref.

In MP4Reader::EnsureDecoderSetup() the audio decoder will be recreated ; however it hasn't been shutdown before doing so. This causes the assert
Assignee: nobody → jyavenard
Flags: needinfo?(jyavenard)
We do not want to recreate the PlatformDecoderModule coming back from dormant when content is encrypted. Also, we can't delete a MediaDataDecoder before calling Shutdown() which could have happened. In all, only create a decoder if one doesn't currently exist
Attachment #8599032 - Flags: review?(ayang)
Depends on: 1132832
Keywords: regression
Comment on attachment 8599032 [details] [diff] [review]
Ensure decoders are properly shutdown

Review of attachment 8599032 [details] [diff] [review]:
-----------------------------------------------------------------

Sorry for this.
Attachment #8599032 - Flags: review?(ayang) → review+
Actually, previous patch was oncomplete. Upon the new call to MP4Reader::ReadMetadata() when coming back from dormant, we would have re-created the CallBack object. The old audio decoder would have attempted then to use the old (now deleted) callback, and it would have crashed. We only need to recreate the decoder when coming back from dormant, and only that
Attachment #8599032 - Attachment is obsolete: true
bad rebase... missed a block
Attachment #8600758 - Attachment is obsolete: true
https://hg.mozilla.org/mozilla-central/rev/4b23f2a48e84
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla40
You need to log in before you can comment on or make changes to this bug.