Closed
Bug 1319251
Opened 8 years ago
Closed 8 years ago
Intermittent dom/media/test/test_media_sniffer.html | application timed out after 330 seconds with no output after "Assertion failure: mPromise, at MozPromise.h:814"
Categories
(Core :: Audio/Video: Playback, defect)
Tracking
()
RESOLVED
FIXED
mozilla53
Tracking | Status | |
---|---|---|
firefox50 | --- | unaffected |
firefox51 | --- | unaffected |
firefox52 | --- | disabled |
firefox53 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: mattwoodrow)
References
Details
(Keywords: assertion, intermittent-failure, regression)
Attachments
(3 files)
1.27 KB,
patch
|
jya
:
review+
|
Details | Diff | Splinter Review |
1.06 KB,
patch
|
jya
:
review+
|
Details | Diff | Splinter Review |
3.98 KB,
patch
|
jya
:
review+
|
Details | Diff | Splinter Review |
Filed by: rvandermeulen [at] mozilla.com https://treeherder.mozilla.org/logviewer.html#?job_id=6968297&repo=autoland https://archive.mozilla.org/pub/firefox/tinderbox-builds/autoland-win64-debug/1479756060/autoland_win8_64-debug_test-mochitest-media-e10s-bm112-tests1-windows-build2.txt.gz New Win8 e10s failure that was probably lurking in the background since they were only enabled on trunk today.
Updated•8 years ago
|
Blocks: 1315141
Keywords: regression
Updated•8 years ago
|
Flags: needinfo?(jwwang)
Assignee | ||
Comment 3•8 years ago
|
||
If we call Shutdown() before Init completes, then we will Reject the promise from shutdown, and it'll be dead when Init completes.
Assignee: nobody → matt.woodrow
Flags: needinfo?(matt.woodrow)
Attachment #8813006 -
Flags: review?(jyavenard)
Assignee | ||
Comment 4•8 years ago
|
||
Same as above, but when the race affects the parent side. We clear mDecoder when we get Shutdown called, and then the Init promise returns and derefs it.
Attachment #8813007 -
Flags: review?(jyavenard)
Comment 5•8 years ago
|
||
Comment on attachment 8813007 [details] [diff] [review] check-decoder-init Review of attachment 8813007 [details] [diff] [review]: ----------------------------------------------------------------- seeing that we're attempting to fix a race, then the member itself should be made thread-safe. will have to use another flag, atomic ::: dom/media/ipc/VideoDecoderParent.cpp @@ +101,5 @@ > { > RefPtr<VideoDecoderParent> self = this; > mDecoder->Init()->Then(mManagerTaskQueue, __func__, > [self] (TrackInfo::TrackType aTrack) { > + if (self->mDecoder) { this seems racy to me... mDecoder is accessed over multiple thread with no monitor in place @@ +108,5 @@ > Unused << self->SendInitComplete(hardwareAccelerated, hardwareReason); > } > }, > [self] (MediaResult aReason) { > if (!self->mDestroyed) { what about the case where initialisation failed?
Attachment #8813007 -
Flags: review?(jyavenard) → review-
Updated•8 years ago
|
Attachment #8813006 -
Flags: review?(jyavenard) → review+
Assignee | ||
Comment 6•8 years ago
|
||
Comment on attachment 8813007 [details] [diff] [review] check-decoder-init Review of attachment 8813007 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/ipc/VideoDecoderParent.cpp @@ +101,5 @@ > { > RefPtr<VideoDecoderParent> self = this; > mDecoder->Init()->Then(mManagerTaskQueue, __func__, > [self] (TrackInfo::TrackType aTrack) { > + if (self->mDecoder) { It shouldn't be? It should only ever be accessed from the manager thread (mManagerTaskQueue). It's racy in terms of async operations happening in an order that we didn't expect (Init, Shutdown, InitComplete), not in terms of multiple threads racing on a data access. @@ +108,5 @@ > Unused << self->SendInitComplete(hardwareAccelerated, hardwareReason); > } > }, > [self] (MediaResult aReason) { > if (!self->mDestroyed) { This case doesn't touch mDecoder, but I can make them consistent.
Assignee | ||
Comment 7•8 years ago
|
||
Attachment #8813019 -
Flags: review?(jyavenard)
Comment 8•8 years ago
|
||
Comment on attachment 8813019 [details] [diff] [review] assert-parent-thread Review of attachment 8813019 [details] [diff] [review]: ----------------------------------------------------------------- thank you for this... The names however are utter confusing... To assert we're on the mManagerTaskQueue you assert OnReaderTaskQueue. Gotta admit at a glance, that it's impossible to tell they are the same! Can you rename either the taskqueue or the method checking that we're on it?
Attachment #8813019 -
Flags: review?(jyavenard) → review+
Updated•8 years ago
|
Attachment #8813007 -
Flags: review- → review+
Pushed by mwoodrow@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/718387d11e93 Check Init promise in VideoDecoderChild before trying to resolve it. r=jya https://hg.mozilla.org/integration/mozilla-inbound/rev/431fe7720cb5 Ensure that our decoder pointer hasn't be revoked when we get the Init callback. r=jya https://hg.mozilla.org/integration/mozilla-inbound/rev/88f8e3bee8c1 Add more current thread assertions in VideoDecoderParent so it's more obvious about which code runs where. r=jya
Comment 10•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/718387d11e93 https://hg.mozilla.org/mozilla-central/rev/431fe7720cb5 https://hg.mozilla.org/mozilla-central/rev/88f8e3bee8c1
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox53:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Updated•8 years ago
|
status-firefox50:
--- → unaffected
status-firefox51:
--- → unaffected
status-firefox52:
--- → disabled
Comment hidden (Intermittent Failures Robot) |
Updated•7 years ago
|
Version: unspecified → 52 Branch
Comment hidden (Intermittent Failures Robot) |
You need to log in
before you can comment on or make changes to this bug.
Description
•