Bug 194351 - [GStreamer] Does not properly handle missing GStreamerGL at runtime
Summary: [GStreamer] Does not properly handle missing GStreamerGL at runtime
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: Other
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL: https://wiki.gnome.org/Apps/Web
Keywords:
Depends on:
Blocks:
 
Reported: 2019-02-06 11:26 PST by hschoepel@gmail.com
Modified: 2019-07-25 06:55 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description hschoepel@gmail.com 2019-02-06 11:26:35 PST
Dear ladies & gentlemen,

I use Linux Gnome 3 Webbrowser "GNOME Web" (previously "Epiphany") and it's crashing every time i try to play an embedded html video. The only solution is to use the cli and kill the process by using kill -9. I was talking already to the Epiphany developer regarding this strange plugins behavior and i will fill another bug on WebKitGTK+ Bugzilla. 

Operating System: Debian Linux ( Sid )
Desktop Environment: Gnome 3
Epiphany Version: 3.30.3
Webkit Version: WebKitGTK+ 2.22.5
Gstreamer Version: https://paste.gnome.org/pnys7qf8x


Terminal output:

henrik@debian:~$ epiphany
Error scanning plugin /usr/lib/jvm/oracle-java8-jre-amd64/lib/amd64/libnpjp2.so, /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess returned 11 exit status
** (WebKitWebProcess:28441): WARNING **: 19:08:44.386: WebKit wasn't able to find the GStreamer opengl plugin. Hardware-accelerated zero-copy video rendering can't be enabled without this plugin.
** (WebKitWebProcess:28441): WARNING **: 19:08:44.621: WebKit wasn't able to find the GStreamer opengl plugin. Hardware-accelerated zero-copy video rendering can't be enabled without this plugin.
** (WebKitWebProcess:28441): WARNING **: 19:08:45.105: WebKit wasn't able to find the GStreamer opengl plugin. Hardware-accelerated zero-copy video rendering can't be enabled without this plugin.
** (WebKitWebProcess:28441): WARNING **: 19:08:45.315: WebKit wasn't able to find the GStreamer opengl plugin. Hardware-accelerated zero-copy video rendering can't be enabled without this plugin.
^C


Example Test websites:
https://www.welt.de/politik/deutschland/article188362265/Weimar-Bundespraesident-Steinmeier-will-demokratischen-Patriotismus.html
https://www.welt.de/politik/ausland/article188356435/Donald-Tusk-Besonderer-Platz-in-der-Hoelle-fuer-Brexit-Befuerworter.html


Troubleshooting steps:

- check if plugins are enabled / disabled. The are by default set to "false"
gsettings get org.gnome.Epiphany.web:/org/gnome/epiphany/web/ enable-plugins
false

- Verified if other gstreamer plugins are needed to fix the Hardware-acceleration output: 
Apt-Cache search didn't provide any other useful packages. Installed packages are shown up in the link.

- Test on other websites:
Also happens on Youtube, Financial Times...


Best regards,
Henrik
Comment 1 hschoepel@gmail.com 2019-02-06 11:30:38 PST
I would like to add that it's hanging/freezing, not crashing.

Best regards,
Henrik
Comment 2 Philippe Normand 2019-02-07 04:28:56 PST
Can you please make sure you installed gstreamer1.0-gl ?
Comment 3 Philippe Normand 2019-02-07 07:27:58 PST
(In reply to hschoepel@gmail.com from comment #1)
> I would like to add that it's hanging/freezing, not crashing.
> 

A patch is needed to fix this. Some observations:

- no one checks the return value of createVideoSink()
- createGSTPlayBin() has no return value, emits no error
Comment 4 Philippe Normand 2019-02-07 08:15:19 PST
I removed my libgstopengl.so and loaded a video in MiniBrowser. Got the warning, but playback started (video rendering works, abeit slowly of course). No freeze/hang.
Comment 5 hschoepel@gmail.com 2019-02-07 11:51:07 PST
Hello Philippe,

Thank you very much for your support. I just installed gstreamer1.0-gl

ii  gstreamer1.0-gl:amd64  1.14.4-1

The "Hardware-accelerated" error is gone now. Watching embedded Videos on welt.de ( newspaper ) or youtube works excellent now. It's lagging for 1-2 seconds if i switch between window-mode to fullscreen at the beginning but that's "ok".

I think gstreamer-gl should be a dependency package if Epiphany will be installed.

Best regards,
Henrik
Comment 6 Philippe Normand 2019-02-07 12:21:33 PST
gstreamer1.0-gl is already in the Recommends: field of the webkit2gtk package. I'm not sure about making it a hard requirement because without it video playback should still work, and I verified that today ;)
Comment 7 Michael Catanzaro 2019-02-07 13:02:55 PST
Henrik, can you confirm that installing the gstreamer1.0-gl package fixed the UI process hang you had been experiencing? It's the entire browser that freezes up so you can't use menus or anything anymore, not just one particular tab?
Comment 8 hschoepel@gmail.com 2019-02-08 03:31:59 PST
Hello,

Yes i can confirm that the freeze/hangs after installing the gstreamer1.0-gl package are gone. Epiphany is stable now and plays all kind of videos nicely. Tested bunch of websites and videos.


And yes, i also confirm that entire browser got frozen up and couldn't use menus or anything else browser related anymore. Only solution was to hard kill the process via cli.

Best regards,
Henrik
Comment 9 Michael Catanzaro 2019-02-08 08:26:51 PST
So that's a security bug then. Probably some UI process call somewhere is not prepared for the web process to become unresponsive.
Comment 10 Michael Catanzaro 2019-06-24 11:49:26 PDT
(In reply to Philippe Normand from comment #3)
> A patch is needed to fix this. Some observations:
> 
> - no one checks the return value of createVideoSink()
> - createGSTPlayBin() has no return value, emits no error

So these are concrete action items we know how to fix, that's good.

(In reply to Michael Catanzaro from comment #9)
> So that's a security bug then. Probably some UI process call somewhere is
> not prepared for the web process to become unresponsive.

Shame we don't know what's causing this.
Comment 11 Philippe Normand 2019-07-25 04:01:39 PDT
(In reply to Michael Catanzaro from comment #10)
> (In reply to Philippe Normand from comment #3)
> > A patch is needed to fix this. Some observations:
> > 
> > - no one checks the return value of createVideoSink()
> > - createGSTPlayBin() has no return value, emits no error
> 
> So these are concrete action items we know how to fix, that's good.
> 

Well actually, createVideoSink() should always return a valid sink pointer and there's an ASSERT for that. So nothing to fix there, it is implemented as expected.

Then createGSTPlayBin() doesn't need a return value either.

I think this bug should be closed.
Comment 12 Michael Catanzaro 2019-07-25 06:29:28 PDT
But the bug is that missing GStreamerGL causes *UI process hangs* and that hasn't been investigated?
Comment 13 Philippe Normand 2019-07-25 06:40:55 PDT
(In reply to Michael Catanzaro from comment #12)
> But the bug is that missing GStreamerGL causes *UI process hangs* and that
> hasn't been investigated?

As stated in comment 4 I can't reproduce that "UI process hang".