Closed Bug 1340197 Opened 7 years ago Closed 7 years ago

MP3 radio stream works only once in a Firefox session

Categories

(Core :: Audio/Video: Playback, defect, P2)

52 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: mayhemer, Assigned: mayhemer)

References

Details

Attachments

(1 file)

+++ This bug was initially created as a clone of Bug #1326066 +++

This is not a relevant problem (very few person open the direct MP3 stream, usualy it is served trough the web online player), but it is strange and I report it.
Steps to reproduce:
1. Open a direct MP3 online radio stream, for example:
http://icestreaming.rai.it/1.mp3
http://icecast.unitedradio.it/Virgin.mp3
(NOte: the default volume of the second stream   is sometimes high)
2. Close the tab with the stream
3. Try to open the stream again

What happens?
Firefox try to connect to the stream without reaching it . No error messages are shown but the stream is not opened.

In Firefox ESR the problem is not present.
I have the problem on FDE on Windows, but some friends have confirmed it also on beta, nightly and with other platforms.

How to fix it?
Restart Firefox and the stream is reached.



Analyzes (https://bugzilla.mozilla.org/show_bug.cgi?id=1326066#c3):

The stream doesn't start to play on the second load because nsHttpChannel waits for entry completion. The first nsHttpChannel didn't finalize the entry because the channel was suspended right before the channel was canceled.


Solution: let the media code specify LOAD_BYPASS_CACHE_IF_BUSY load flag on the loading channel.
Component: Audio/Video → Audio/Video: Playback
No longer depends on: 1326066
Hi, Honza,
You proposed the solution in comment0, specifying LOAD_BYPASS_CACHE_IF_BUSY flag in media code.
However, the media code has specified it [1] for a long time, but issue still exists.
Could you give me some other suggestion?
Thanks!

[1] http://searchfox.org/mozilla-central/rev/e5b13e6224dbe3182050cf442608c4cb6a8c5c55/dom/html/HTMLMediaElement.cpp#1183
Flags: needinfo?(honzab.moz)
I'll take this bug, but unless explicitly said, I won't be diagnosing this for 57.
Assignee: nobody → honzab.moz
Flags: needinfo?(honzab.moz)
Mass change P1->P2 to align with new Mozilla triage process
Priority: P1 → P2
Honza,
Any luck on this bug? Is this bug still a problem?
Flags: needinfo?(honzab.moz)
So, I looked once more to the log in bug 1326066.  The Michal's conclusion was put too vaguely so I cam to a wrong conclusion.

The problem is elsewhere, in the http code.  We don't respect BYPASS_WHEN_BUSY when the entry is in write progress by the previous channel.

It should be easy to fix.
Status: NEW → ASSIGNED
Flags: needinfo?(honzab.moz)
No!  The problem really is in not setting the LOAD_BYPASS_LOCAL_CACHE_IF_BUSY on the channel.  In the log I can see it very clearly.

This is not a media bug, it's a broader thing.  The first channel is suspended and canceled.  It still keeps the entry, OK.  The second top level load channel is opened and, as it's NOT a media channel - it's a top level load channel and has no notion of loading a media yet, it IS NOT set the BYPASS_IF_BUSY flag...

From a user point of view we may want to specify LOAD_BYPASS_LOCAL_CACHE_IF_BUSY for all top-level loads or do some kind of a compromise (already have an idea for a patch).  When there is a concurrent and resumable response in progress we will do a concurrent cache streaming.  When the concurrent response is non-resumable, we wait.  And here we can make the change - when the second (depending) load is a top level load, just bypass this wait.
Attached patch v1Splinter Review
Attachment #8932105 - Flags: review?(michal.novotny)
(In reply to Honza Bambas (:mayhemer) from comment #6)
> This is not a media bug, it's a broader thing.  The first channel is
> suspended and canceled.  It still keeps the entry, OK.  The second top level
> load channel is opened and, as it's NOT a media channel - it's a top level
> load channel and has no notion of loading a media yet, it IS NOT set the
> BYPASS_IF_BUSY flag...

Maybe this patch fixes this particular load, but is it OK that cancelled channel related to a closed tab can keep the cache entry open so it's not usable by other channel?
Flags: needinfo?(honzab.moz)
(In reply to Michal Novotny (:michal) from comment #8)
> (In reply to Honza Bambas (:mayhemer) from comment #6)
> > This is not a media bug, it's a broader thing.  The first channel is
> > suspended and canceled.  It still keeps the entry, OK.  The second top level
> > load channel is opened and, as it's NOT a media channel - it's a top level
> > load channel and has no notion of loading a media yet, it IS NOT set the
> > BYPASS_IF_BUSY flag...
> 
> Maybe this patch fixes this particular load, but is it OK that cancelled
> channel related to a closed tab can keep the cache entry open so it's not
> usable by other channel?

regardless of what an answer could be, I would rather separate it to yet another bug.  the fix I propose has other advantages, like when users opens the same page more than once and the response is not resumable we stream the second (and on) responses from network rather than waiting for completion of the first one.  it's likely to happen with streamed chunked responses that are naturally not resumable.

I've also made some preliminary objections against dooming from cancel at https://bugzilla.mozilla.org/show_bug.cgi?id=1326066#c6

to be honest, this is a media (or some combination) bug since we leak all top-level loading channels playing a media content and with it we block (are made to block) the cache entry.  i'll file a bug.
Flags: needinfo?(honzab.moz)
Attachment #8932105 - Flags: review?(michal.novotny) → review+
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/42fc2739a333
Don't wait for concurrent HTTP cache entry when the depending load is a top-level navigation. r=michal
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/42fc2739a333
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Backout by btara@mozilla.com:
https://hg.mozilla.org/mozilla-central/rev/38f49346a200
Backed out 1 changesets for failing reftests on /tests/dom/base/crashtests/504224.html r=backout a=backout on a CLOSED TREE
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla59 → ---
(In reply to Bogdan Tara[:bogdan_tara] from comment #14)
> Backed out 1 changesets (bug 1340197) for failing reftests on
> /tests/dom/base/crashtests/504224.html
> 
> https://treeherder.mozilla.org/logviewer.html#?job_id=148526830&repo=mozilla-
> inbound&lineNumber=2367
> 
> https://treeherder.mozilla.org/#/jobs?repo=mozilla-
> central&revision=38f49346a200cc25492236c7b3c536fc835fe031
> 
> https://treeherder.mozilla.org/#/jobs?repo=mozilla-
> inbound&revision=0e4e79435223abf6c5edf5320c11f3432b579fd3&filter-
> searchStr=87574beda25c5cecd334d247bf32817e4c9bea69&filter-tier=1

This is a known failure (https://bugzilla.mozilla.org/show_bug.cgi?id=1385298), have I made it perma-failing?
Flags: needinfo?(btara)
It was perma-failing on Android.

https://mzl.la/2j8GPEJ
Flags: needinfo?(btara)
Depends on: 1385298
Flags: needinfo?(honzab.moz)
Status: REOPENED → ASSIGNED
bug 1385298 is now fixed, we can reland.
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/16643f939e8f
Don't wait for concurrent HTTP cache entry when the depending load is a top-level navigation. r=michal
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/16643f939e8f
Status: ASSIGNED → RESOLVED
Closed: 7 years ago7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: