Bug 184581

Summary: [GTK][GStreamer] Tests crashing since playbin3 was added
Product: WebKit Reporter: Claudio Saavedra <csaavedra>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: bugs-noreply, commit-queue, magomez, pnormand, tsaunier
Priority: P2    
Version: Other   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
[GStreamer] Never call updateTracks if running on legacy pipeline
none
[GStreamer] Never call updateTracks if running on legacy pipeline none

Description Claudio Saavedra 2018-04-13 03:06:22 PDT
These tests started crashing with r230540. They were already failing but now they crash.

http/tests/media/hls/hls-audio-tracks-locale-selection.html
http/tests/media/hls/hls-progress.html
http/tests/media/hls/video-controller-getStartDate.html
Comment 1 Claudio Saavedra 2018-04-13 03:12:44 PDT
Maybe this can help (pretty much the same for all three):

Thread 1 (Thread 0x7f6f38332ac0 (LWP 7836)):
#0  _g_log_abort () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmessages.c:554
#1  0x00007f6f3fcf4415 in g_logv () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmessages.c:1362
#2  0x00007f6f3fcf4562 in g_log () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmessages.c:1403
#3  0x00007f6f47fd3a17 in _ZN7WebCore25TrackPrivateBaseGStreamer10disconnectEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#4  0x00007f6f47fd3ad7 in _ZN7WebCore25TrackPrivateBaseGStreamerD2Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#5  0x00007f6f47fd2059 in _ZN7WebCore26AudioTrackPrivateGStreamerD0Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#6  0x00007f6f47df2bf3 in _ZN7WebCore10AudioTrackD2Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#7  0x00007f6f47df2cb9 in _ZN7WebCore10AudioTrackD0Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00007f6f47dfddef in _ZN7WebCore10TrackEventD2Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#9  0x00007f6f47dfde09 in _ZN7WebCore10TrackEventD0Ev () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#10 0x00007f6f4734e5fa in _ZN7WebCore17GenericEventQueue16dispatchOneEventEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#11 0x00007f6f477f778c in _ZN7WebCore14TaskDispatcherINS_5TimerEE15dispatchOneTaskEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#12 0x00007f6f477f7897 in _ZN7WebCore14TaskDispatcherINS_5TimerEE16sharedTimerFiredEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#13 0x00007f6f4782318a in _ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#14 0x00007f6f4468a793 in _ZZN3WTF7RunLoop9TimerBaseC4ERS0_ENUlPvE_4_FUNES3_ () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#15 0x00007f6f3fced81a in g_main_dispatch () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3148
#16 g_main_context_dispatch () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3813
#17 0x00007f6f3fcedba8 in g_main_context_iterate () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:3886
#18 0x00007f6f3fcedec2 in g_main_loop_run () at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.54.2/glib/gmain.c:4082
#19 0x00007f6f4468abb0 in _ZN3WTF7RunLoop3runEv () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#20 0x00007f6f46ada7c2 in _ZN6WebKit16ChildProcessMainINS_10WebProcessENS_14WebProcessMainEEEiiPPc () from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#21 0x00007f6f3dd2c2b1 in __libc_start_main (main=0x7f6f497e7cb0 <main>, argc=3, argv=0x7fff0fe8df38, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff0fe8df28) at ../csu/libc-start.c:291
#22 0x00007f6f497e7d3a in _start ()

STDERR: 
STDERR: warning: core file may not match specified executable file.
STDERR: 
STDERR: (WebKitWebProcess:7836): GStreamer-CRITICAL **: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
Comment 2 Philippe Normand 2018-04-13 03:28:16 PDT
Strange though, playbin3 isn't enabled unless the USE_PLAYBIN3 env var is set.
Comment 3 Thibault Saunier 2018-04-13 04:55:39 PDT
(In reply to Philippe Normand from comment #2)
> Strange though, playbin3 isn't enabled unless the USE_PLAYBIN3 env var is
> set.

Right, the probleme seem to be that now the playbin3 support is built (as Gst > 1.10), I think we enter that code path:

```
#if GST_CHECK_VERSION(1, 10, 0)
    if (m_stream)
        m_stream.clear();
#endif
```

in `void TrackPrivateBaseGStreamer::disconnect()`, but m_stream should bu NULL here.

I have not been able to reproduce locally.
Comment 4 Claudio Saavedra 2018-04-14 00:14:22 PDT
I can reproduce this crash locally so if you need me to try any patch I can do it.
Comment 5 Thibault Saunier 2018-04-14 05:59:51 PDT
(In reply to Claudio Saavedra from comment #4)
> I can reproduce this crash locally so if you need me to try any patch I can
> do it.
Is it racy?
Comment 6 Philippe Normand 2018-04-14 06:58:37 PDT
Have you tried with GStreamer 1.10 or 1.14, Thibault?
Comment 7 Thibault Saunier 2018-05-09 13:52:54 PDT
Created attachment 340020 [details]
[GStreamer] Never call updateTracks if running on legacy pipeline
Comment 8 Philippe Normand 2018-05-09 14:03:45 PDT
Comment on attachment 340020 [details]
[GStreamer] Never call updateTracks if running on legacy pipeline

View in context: https://bugs.webkit.org/attachment.cgi?id=340020&action=review

Which element is sending the message?

> Source/WebCore/ChangeLog:10
> +        Reviewed by NOBODY (OOPS!).

Duplicate :)

> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1288
> +        if (!m_isLegacyPlaybin) {

Please turn this to an early break
Comment 9 Thibault Saunier 2018-05-09 14:18:55 PDT
Created attachment 340023 [details]
[GStreamer] Never call updateTracks if running on legacy pipeline
Comment 10 Thibault Saunier 2018-05-09 14:19:24 PDT
(In reply to Philippe Normand from comment #8)
> Comment on attachment 340020 [details]
> [GStreamer] Never call updateTracks if running on legacy pipeline
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=340020&action=review
> 
> Which element is sending the message?
> 
> > Source/WebCore/ChangeLog:10
> > +        Reviewed by NOBODY (OOPS!).
> 
> Duplicate :)

Fixed.


> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1288
> > +        if (!m_isLegacyPlaybin) {
> 
> Please turn this to an early break

Done.
Comment 11 Philippe Normand 2018-05-09 14:24:40 PDT
(In reply to Thibault Saunier from comment #10)
> (In reply to Philippe Normand from comment #8)
> > Comment on attachment 340020 [details]
> > [GStreamer] Never call updateTracks if running on legacy pipeline
> > 
> > View in context:
> > https://bugs.webkit.org/attachment.cgi?id=340020&action=review
> > 
> > Which element is sending the message?

And this ^^ :)
Comment 12 Thibault Saunier 2018-05-09 14:29:04 PDT
(In reply to Philippe Normand from comment #11)
> (In reply to Thibault Saunier from comment #10)
> > (In reply to Philippe Normand from comment #8)
> > > Comment on attachment 340020 [details]
> > > [GStreamer] Never call updateTracks if running on legacy pipeline
> > > 
> > > View in context:
> > > https://bugs.webkit.org/attachment.cgi?id=340020&action=review
> > > 
> > > Which element is sending the message?
> 
> And this ^^ :)

Oops, missed that question... I didn't check directly but it must be tsdemux, the only demuxers who knows how to post stream collections afaik.
Comment 13 Philippe Normand 2018-05-09 14:37:28 PDT
wow ok, tsdemux lives in the future already!
Comment 14 Philippe Normand 2018-05-09 14:47:42 PDT
Comment on attachment 340023 [details]
[GStreamer] Never call updateTracks if running on legacy pipeline

View in context: https://bugs.webkit.org/attachment.cgi?id=340023&action=review

> LayoutTests/ChangeLog:3
> +        [GStreamer] Never call updateTracks if running on legacy pipeline

Ah sorry I missed this. This line should always be the bug title. So you could have either moved the explanation below or retitled the bug. For future reference anyway, this is jus a nit.
Comment 15 WebKit Commit Bot 2018-05-09 15:04:59 PDT
Comment on attachment 340023 [details]
[GStreamer] Never call updateTracks if running on legacy pipeline

Clearing flags on attachment: 340023

Committed r231600: <https://trac.webkit.org/changeset/231600>
Comment 16 WebKit Commit Bot 2018-05-09 15:05:01 PDT
All reviewed patches have been landed.  Closing bug.
Comment 17 Michael Catanzaro 2018-05-10 06:41:19 PDT
*** Bug 185252 has been marked as a duplicate of this bug. ***