Closed Bug 693021 Opened 10 years ago Closed 9 years ago

Intermittent test_seek.html | Exited with code 1 during test run from "Assertion failure: !aOther.IsNull() && "Cannot compute with aOther null value", at ../../dist/include/mozilla/TimeStamp.h:220"


(Core :: Audio/Video, defect)

Not set



Tracking Status
firefox-esr10 --- fixed


(Reporter: philor, Assigned: kinetik)



(Keywords: assertion, intermittent-failure, Whiteboard: [test which aborts the suite])


(1 file, 1 obsolete file)
Rev3 Fedora 12x64 mozilla-inbound debug test mochitests-1/5 on 2011-10-07 14:57:14 PDT for push e27c6941c340

78703 INFO TEST-PASS | /tests/content/media/test/test_seek.html | bug516323.indexed.ogv seek test 1: seeking should be readonly - true should equal true
Assertion failure: !aOther.IsNull() && "Cannot compute with aOther null value", at ../../dist/include/mozilla/TimeStamp.h:220
WARNING: shutting down early because of crash!: file /builds/slave/m-in-lnx64-dbg/build/dom/plugins/ipc/PluginModuleChild.cpp, line 741
WARNING: plugin process _exit()ing: file /builds/slave/m-in-lnx64-dbg/build/dom/plugins/ipc/PluginModuleChild.cpp, line 706
TEST-UNEXPECTED-FAIL | /tests/content/media/test/test_seek.html | Exited with code 1 during test run
INFO | | Application ran for: 0:23:58.515881
INFO | | Reading PID log: /tmp/tmppdwfPzpidlog
==> process 2240 launched child process 2267
INFO | | Checking for orphan process with PID: 2267
PROCESS-CRASH | /tests/content/media/test/test_seek.html | application crashed (minidump found)
Crash dump filename: /tmp/tmpMSP1p0/minidumps/7824ab02-640a-c820-716f7c67-3bd92165.dmp
Operating system: Linux
                  0.0.0 Linux #1 SMP Sat Nov 7 21:11:14 EST 2009 x86_64
CPU: amd64
     family 6 model 23 stepping 10
     2 CPUs

Crash reason:  SIGABRT
Crash address: 0x1f4000008c0

Thread 18 (crashed)
 0 + 0xee6b
    rbx = 0x000000dc   r12 = 0x00000000   r13 = 0xf1a1b068   r14 = 0x00000000
    r15 = 0x00000003   rip = 0xd360ee6b   rsp = 0xd6e22a38   rbp = 0xd6e22a40
    Found by: given as instruction pointer in context
 1!CrashInJS [jsutil.cpp:e27c6941c340 : 95 + 0x9]
    rip = 0xf28b5932   rsp = 0xd6e22a40
    Found by: stack scanning
 2!JS_Assert [jsutil.cpp:e27c6941c340 : 103 + 0x4]
    rip = 0xf28b598b   rsp = 0xd6e22a50
    Found by: stack scanning
 3!mozilla::TimeStamp::operator- [TimeStamp.h : 220 + 0x27]
    rip = 0xf0a467f0   rsp = 0xd6e22a90
    Found by: stack scanning
 4!nsBuiltinDecoderStateMachine::AdvanceFrame [nsBuiltinDecoderStateMachine.cpp:e27c6941c340 : 1747 + 0x22]
    rip = 0xf17da2c8   rsp = 0xd6e22ac0
    Found by: stack scanning
 5!nsRunnable::Release [nsThreadUtils.cpp:e27c6941c340 : 55 + 0x68]
    rip = 0xf2206d1d   rsp = 0xd6e22af0
    Found by: stack scanning
 6!nsCOMPtr<nsIRunnable>::~nsCOMPtr [nsCOMPtr.h : 556 + 0x1c]
    rip = 0xf0a457de   rsp = 0xd6e22b20
    Found by: stack scanning
 7!nsBuiltinDecoderStateMachine::StartDecodeThread [nsBuiltinDecoderStateMachine.cpp:e27c6941c340 : 1094 + 0xb]
    rip = 0xf17d750a   rsp = 0xd6e22b40
    Found by: stack scanning
 8!nsBuiltinDecoderStateMachine::GetDecodedAudioDuration [nsBuiltinDecoderStateMachine.cpp:e27c6941c340 : 288 + 0x6]
    rip = 0xf17d43d2   rsp = 0xd6e22b78
    Found by: stack scanning
OS: Mac OS X → Linux
Hardware: x86 → x86_64
Whiteboard: [orange][test which aborts the suite] → [orange][test which aborts the suite][fixed by 623444?]
Oops, not this one.
Whiteboard: [orange][test which aborts the suite][fixed by 623444?] → [orange][test which aborts the suite]
I can't reproduce this locally, but from code inspection it appears that the problem is that DecodeSeek runs on the decode thread at the time AdvanceFrame drops the decoder monitor to call RenderVideoFrame.  DecodeSeek calls StopPlayback, which nulls mPlayStartTime.  Inside the currentFrame conditional, mPlayStartTime must have been valid (before dropping the monitor) to calculate presTime, but has become null by the time the now calculation is reached.
Assignee: nobody → kinetik
Attached patch patch v0Splinter Review
This is actually easy to reproduce locally by adding a short sleep inside the RenderVideoFrame block (where the decoder lock is dropped) in AdvanceFrame.

The attached patch causes AdvanceFrame to bails early if the state machine is no longer playing, as the current frame is likely out of date due to a seek having completed on the decode thread.

The attached fix also removes the fix added in bug 673698, as I think this fix makes that one redundant.

Tests pass locally and on try with and without the debugging sleep.
Attachment #602787 - Flags: review?(cpearce)
Attachment #602787 - Flags: review?(cpearce) → review+
(In reply to Matthew Gregan [:kinetik] from comment #76)
> The attached fix also removes the fix added in bug 673698, as I think this
> fix makes that one redundant.

Turns out I was wrong, so I backed out that part of the patch:
Closed: 9 years ago
Resolution: --- → FIXED
kinetik, would this be safe enough to uplift to esr10?
Attached patch Patch+followup folded (obsolete) — Splinter Review
[Approval Request Comment]
If this is not a sec:{high,crit} bug, please state case for ESR consideration: Reducing orange.
User impact if declined: No idea
Fix Landed on Version: mozilla13
Risk to taking this patch (and alternatives if risky): Low
String or UUID changes made by this patch: None

See for more info.
Attachment #654991 - Flags: approval-mozilla-esr10?
Comment on attachment 654991 [details] [diff] [review]
Patch+followup folded

We're going to build on ESR10.0.7 today, but this is nptob so go ahead with this at your leisure.
Attachment #654991 - Flags: approval-mozilla-esr10? → approval-mozilla-esr10+
Attachment #654991 - Attachment is obsolete: true
Whiteboard: [orange][test which aborts the suite] → [test which aborts the suite]
You need to log in before you can comment on or make changes to this bug.