Closed
Bug 878183
Opened 12 years ago
Closed 11 years ago
[A/V] deadlock during refreshing a video content
Categories
(Firefox OS Graveyard :: General, defect)
Tracking
(blocking-b2g:leo+, firefox24 unaffected, b2g18 verified, b2g18-v1.0.0 wontfix, b2g18-v1.0.1 wontfix, b2g-v1.1hd fixed)
Tracking | Status | |
---|---|---|
firefox24 | --- | unaffected |
b2g18 | --- | verified |
b2g18-v1.0.0 | --- | wontfix |
b2g18-v1.0.1 | --- | wontfix |
b2g-v1.1hd | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
()
Details
Attachments
(2 files, 4 obsolete files)
(deleted),
text/plain
|
Details | |
(deleted),
patch
|
sotaro
:
review+
|
Details | Diff | Splinter Review |
+++ This bug was initially created as a clone of Bug #871485 +++
STR
- visit http://m.terratv.terra.com.br/
- play video
- refresh web page during playing video
expected
- restart video playback
result
- freeze video playback before refreshing the page.
Not always happen. occasionally
prerequisite
- Bug 876099 - re-enable 3gp support
- Bug 871485 - [A/V] H/W decoder cannot be shared between applications/tasks
Assignee | ||
Updated•12 years ago
|
Assignee | ||
Comment 1•12 years ago
|
||
Assignee | ||
Updated•12 years ago
|
blocking-b2g: leo+ → ---
Assignee | ||
Updated•12 years ago
|
blocking-b2g: --- → leo?
Comment 2•12 years ago
|
||
Sotaro - Can this affect media playback on YouTube? If so, link the bug up to bug 877024.
Assignee | ||
Comment 3•12 years ago
|
||
Yes, it could affect also to Youtube video playback.
Comment 4•12 years ago
|
||
blocking-b2g: leo? → leo+
Updated•12 years ago
|
status-b2g18:
--- → affected
status-b2g18-v1.0.0:
--- → wontfix
status-b2g18-v1.0.1:
--- → wontfix
status-b2g-v1.1hd:
--- → affected
Assignee | ||
Comment 5•12 years ago
|
||
- nsBuiltinDecoderStateMachine's decode thread called OmxDecoder::Pause() with holding nsBuiltinDecoder's ReentrantMonitor.
- OmxDecoder::Pause() stopped by waiting OmxDecoder's mutex
- OmxDecoder's mutex was already hold by OMXCodec::drainInputBuffer()
- OMXCodec::drainInputBuffer() did not exit because ChannelMediaResource::Read() does not exit
- ChannelMediaResource::Read() needs data receive from HttpChannelChild.
- Data arrival needs to come from HttpChannelChild via main thread
- main thread was calling nsBuiltinDecoderStateMachine::SetVolume()
- nsBuiltinDecoderStateMachine::SetVolume() did not exit because the function waiting to hold holding nsBuiltinDecoder's ReentrantMonitor.
Assignee | ||
Comment 6•12 years ago
|
||
In comment #5, following is a problem. Need not to hold nsBuiltinDecoder's ReentrantMonitor.
- nsBuiltinDecoderStateMachine's decode thread called OmxDecoder::Pause() with holding nsBuiltinDecoder's ReentrantMonitor.
Assignee | ||
Comment 7•12 years ago
|
||
Assignee | ||
Updated•12 years ago
|
Attachment #756851 -
Flags: review?(chris.double)
Updated•12 years ago
|
Attachment #756851 -
Flags: review?(chris.double) → review+
Assignee | ||
Comment 8•11 years ago
|
||
Committable patch. Carry "chris.double: review+".
Attachment #757964 -
Flags: review+
Assignee | ||
Comment 9•11 years ago
|
||
Committable patch for b2g18. Carry "chris.double: review+".
Attachment #756851 -
Attachment is obsolete: true
Attachment #757965 -
Flags: review+
Assignee | ||
Comment 10•11 years ago
|
||
Assignee | ||
Comment 11•11 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #10)
> https://tbpl.mozilla.org/?tree=Try&rev=a8c6709a0438
A lot of orange on all platforms except b2g.
Comment 12•11 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #11)
>
> A lot of orange on all platforms except b2g.
I'll see if I can work out why the non-b2g platforms are orange.
Comment 13•11 years ago
|
||
Comment on attachment 757964 [details] [diff] [review]
patch v2 - exit ReentrantMonitor when calling OnDecodeThreadFinish()
Review of attachment 757964 [details] [diff] [review]:
-----------------------------------------------------------------
::: content/media/MediaDecoderStateMachine.cpp
@@ +516,5 @@
> LOG(PR_LOG_DEBUG, ("%p Decode thread finished", mDecoder.get()));
> }
>
> + {
> + ReentrantMonitorAutoExit exitMon(mDecoder->GetReentrantMonitor());
This exits the monitor when it's not been entered first.
The monitor is only held while the ReentrantMonitorAutoEnter created on line 495 is alive, and that goes out of scope and is destroyed before you enter the scope here.
That's why your patch is failing on try; the monitor is not held before the ReentrantMonitorAutoExit releases it.
Assignee | ||
Comment 14•11 years ago
|
||
(In reply to Chris Pearce (:cpearce) from comment #13)
>
> The monitor is only held while the ReentrantMonitorAutoEnter created on line
> 495 is alive, and that goes out of scope and is destroyed before you enter
> the scope here.
>
> That's why your patch is failing on try; the monitor is not held before the
> ReentrantMonitorAutoExit releases it.
I did not checked this is already fixed in master by Bug 799315. So, it is a problem of only b2g18.
Assignee | ||
Comment 15•11 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #14)
> (In reply to Chris Pearce (:cpearce) from comment #13)
> >
> > The monitor is only held while the ReentrantMonitorAutoEnter created on line
> > 495 is alive, and that goes out of scope and is destroyed before you enter
> > the scope here.
> >
> > That's why your patch is failing on try; the monitor is not held before the
> > ReentrantMonitorAutoExit releases it.
>
> I did not checked this is already fixed in master by Bug 799315. So, it is a
> problem of only b2g18.
correction:
b2g18's one is incorrectly backported in Bug 860760.
Assignee | ||
Updated•11 years ago
|
Attachment #757964 -
Attachment is obsolete: true
Assignee | ||
Updated•11 years ago
|
Attachment #757965 -
Attachment is obsolete: true
Assignee | ||
Comment 16•11 years ago
|
||
Fix code same as in master.
Assignee | ||
Updated•11 years ago
|
Attachment #758562 -
Flags: review?(chris.double)
Assignee | ||
Comment 17•11 years ago
|
||
Assignee | ||
Comment 18•11 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #17)
> https://tbpl.mozilla.org/?tree=Try&rev=c1f9b8bce3cd
All reftests failed. They are always failed on b2g18. See Bug 877400 comment #22.
Comment 19•11 years ago
|
||
Comment on attachment 758562 [details] [diff] [review]
patch v3 for b2g18 - exit ReentrantMonitor when calling OnDecodeThreadFinish()
Chris Pearce designed/developed the state machine threading mechanism so I'll pass review on to him.
Attachment #758562 -
Flags: review?(chris.double) → review?(cpearce)
Updated•11 years ago
|
Attachment #758562 -
Flags: review?(cpearce) → review+
Assignee | ||
Comment 20•11 years ago
|
||
Add header to the patch. Carry "cpearce: review+".
Attachment #758562 -
Attachment is obsolete: true
Attachment #758918 -
Flags: review+
Assignee | ||
Comment 21•11 years ago
|
||
This bug is only for b2g18. Master does not have the problem.
Assignee | ||
Updated•11 years ago
|
Keywords: checkin-needed
Comment 22•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
status-firefox24:
--- → unaffected
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → 1.1 QE2 (6jun)
Comment 23•11 years ago
|
||
Updated•11 years ago
|
Flags: in-moztrap?
Updated•11 years ago
|
Flags: in-moztrap? → in-moztrap+
Comment 25•11 years ago
|
||
Added Browser Suite Test Case #8565 [Browser] Refreshing a video played through the browser restarts the video normally
Updated•11 years ago
|
Whiteboard: leorun3
Updated•11 years ago
|
Updated•11 years ago
|
Whiteboard: leorun3
You need to log in
before you can comment on or make changes to this bug.
Description
•