flathub / com.obsproject.Studio

This repository is no longer used to build OBS. Issues should be reported at https://github.com/obsproject/obs-studio
https://github.com/obsproject/obs-studio
29 stars 19 forks source link

OBS Studio chrashes on Fedora 32 with GNOME 3.36 and Desktop Screencast #60

Closed jvnknvlgl closed 3 years ago

jvnknvlgl commented 4 years ago

When I use Desktop Screencast (Wayland / X11), OBS Studio crashes as soon as I select a monitor to share. I attached a screencast. Running the app using flatpak run com.obsproject.Studio I do not get any useful messages, the app just freezes.

obs.zip

TingPing commented 4 years ago

CC @GeorgesStavracas

GeorgesStavracas commented 4 years ago

I can't reproduce this. Can you run with --verbose and paste the log?

jvnknvlgl commented 4 years ago

flatpak run com.obsproject.Studio --verbose > log.txt

Console output:

Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
Gtk-Message: 17:40:41.602: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "pk-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:40:41.602: Failed to load module "pk-gtk-module"
Qt: Session management error: None of the authentication protocols specified are supported
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_actionGridMode_triggered()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
error: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory

error: os_dlopen(/app//lib/obs-plugins/obs-ndi.so->/app//lib/obs-plugins/obs-ndi.so): /app//lib/obs-plugins/obs-ndi.so: cannot open shared object file: No such file or directory

error: Service '' not found

Log file: log.txt

jvnknvlgl commented 4 years ago
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
Gtk-Message: 17:48:39.503: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "pk-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:48:39.503: Failed to load module "pk-gtk-module"
Qt: Session management error: None of the authentication protocols specified are supported
Attempted path: share/obs/obs-studio/locale/en-US.ini
Attempted path: /app/share/obs/obs-studio/locale/en-US.ini
Attempted path: share/obs/obs-studio/locale.ini
Attempted path: /app/share/obs/obs-studio/locale.ini
Attempted path: share/obs/obs-studio/themes/Dark.qss
Attempted path: /app/share/obs/obs-studio/themes/Dark.qss
info: Command Line Arguments: --verbose
info: CPU Name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
info: CPU Speed: 3499.872MHz
info: Physical Cores: 4, Logical Cores: 8
info: Physical Memory: 31844MB Total, 23010MB Free
info: Kernel Version: Linux 5.6.0-300.fc32.x86_64
info: Distribution: "KDE Flatpak runtime" "5.14"
info: Window System: X11.0 - vendor string: Fedora Project - vendor release: 12008000
info: Portable mode: false
Attempted path: share/obs/obs-studio/themes/Dark/no_sources.svg
Attempted path: /app/share/obs/obs-studio/themes/Dark/no_sources.svg
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_clicked()
QMetaObject::connectSlotsByName: No matching signal for on_advAudioProps_destroyed()
QMetaObject::connectSlotsByName: No matching signal for on_actionGridMode_triggered()
QMetaObject::connectSlotsByName: No matching signal for on_program_customContextMenuRequested(QPoint)
info: OBS 25.0.3 (linux)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
    samples per sec: 44100
    speakers:        2
info: ---------------------------------
info: Initializing OpenGL...
info: Loading up OpenGL on adapter Intel Mesa Intel(R) HD Graphics 630 (KBL GT2)
info: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 20.0.1, shading language 4.60
info: ---------------------------------
info: video settings reset:
    base resolution:   1920x1080
    output resolution: 1280x720
    downscale filter:  Bicubic
    fps:               60/1
    format:            NV12
    YUV mode:          601/Partial
info: NV12 texture support not available
info: Audio monitoring device:
    name: Default
    id: default
info: ---------------------------------
warning: Failed to load 'en-US' text for module: 'decklink-ouput-ui.so'
libDeckLinkAPI.so: cannot open shared object file: No such file or directory
warning: A DeckLink iterator could not be created.  The DeckLink drivers may not be installed
info: No blackmagic support
error: os_dlopen(libnvidia-encode.so.1->libnvidia-encode.so.1): libnvidia-encode.so.1: cannot open shared object file: No such file or directory

info: FFMPEG VAAPI supported
error: os_dlopen(/app//lib/obs-plugins/obs-ndi.so->/app//lib/obs-plugins/obs-ndi.so): /app//lib/obs-plugins/obs-ndi.so: cannot open shared object file: No such file or directory

warning: Module '/app//lib/obs-plugins/obs-ndi.so' not loaded
info: ---------------------------------
info:   Loaded Modules:
info:     text-freetype2.so
info:     rtmp-services.so
info:     obs-xdg-portal.so
info:     obs-x264.so
info:     obs-transitions.so
info:     obs-outputs.so
info:     obs-libfdk.so
info:     obs-filters.so
info:     obs-ffmpeg.so
info:     linux-v4l2.so
info:     linux-pulseaudio.so
info:     linux-decklink.so
info:     linux-capture.so
info:     image-source.so
info:     frontend-tools.so
info:     decklink-ouput-ui.so
info: ---------------------------------
info: ==== Startup complete ===============================================
error: Service '' not found
info: All scene data cleared
info: ------------------------------------------------
info: pulse-input: Server name: 'pulseaudio 13.99.1-rebootstrapped'
info: pulse-input: Audio format: s16le, 44100 Hz, 2 channels
info: pulse-input: Started recording from 'alsa_output.pci-0000_00_1f.3.analog-stereo.monitor'
info: pulse-input: Server name: 'pulseaudio 13.99.1-rebootstrapped'
info: pulse-input: Audio format: s16le, 44100 Hz, 2 channels
info: pulse-input: Started recording from 'alsa_input.pci-0000_00_1f.3.analog-stereo'
info: OBS XDG initialized (sender name: 1_621)
info: Switched to scene 'Scene'
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info:     - source: 'Desktop Screencast (Wayland / X11)' (obs-xdg-source)
info: ------------------------------------------------
Attempted path: share/obs/obs-studio/images/overflow.png
Attempted path: /app/share/obs/obs-studio/images/overflow.png
info: [OBS XDG] Screencast session created
info: [OBS XDG] Asking for monitor…
info: adding 23 milliseconds of audio buffering, total audio buffering is now 23 milliseconds (source: Desktop Audio)

info: [OBS XDG] Monitor selected, setting up screencast
info: [OBS XDG] Starting monitor screencast…
info: adding 23 milliseconds of audio buffering, total audio buffering is now 46 milliseconds (source: Desktop Audio)

This might be slightly more useful.

lionirdeadman commented 4 years ago

To help reproduce, SB might help. Silverblue version :

● ostree://fedora:fedora/32/x86_64/silverblue
                   Version: 32.20200411.n.0 (2020-04-11T08:28:54Z)
                BaseCommit: f91f7f27e54e11c36d2ca3a4b7a939da84167d3f48a3659c3278c33d0d7fab5d
              GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

Flatpak version :


          ID: com.obsproject.Studio
         Ref: app/com.obsproject.Studio/x86_64/stable
        Arch: x86_64
      Branch: stable
     Version: 25.0.4
     License: GPL-2.0
      Origin: flathub
  Collection: org.flathub.Stable
Installation: system
   Installed: 45.2 MB
     Runtime: org.kde.Platform/x86_64/5.14
         Sdk: org.kde.Sdk/x86_64/5.14

      Commit: a1b16d92fc5599996cba7cccd1476a0f9a5913adf7009079aa7f74ba72002f1e
      Parent: 729901b595c5dd86d8d9e68d84316a530c66be67c679736dd33156175f22ea87
     Subject: obs 25.0.4 (99e2644a)
        Date: 2020-04-06 06:12:13 +0000

Log : obs.log

I think the problem is GNOME 3.36's screenshare fails and then OBS doesn't know what to do so it just waits and then GNOME steps in and tells you to stop it. Either that or the failure to get certain things at the start causes it to not handle it properly.

taaem commented 4 years ago

I'm guessing in the dark, but I have the same issue. Could this be related to Fedora 32 shipping pipewire 0.3 and not 0.2 anymore? Because I get errors from pipewire when trying to create screencast in OBS.

jopereira commented 4 years ago

Same here after upgrade from Fedora 31 to 32 (Workstation, not Silverblue). Output of obs and pipewire logs attached.

obs.txt pipewire.txt

hnioche commented 4 years ago

I have the same error on Arch, gnome 3.36.2, pipewire 0.3.4. OBS flatpak 25.0.4 freeze when screencasting whereas the pacman package 25.0.8-1 works normally with the obs-xdg-portal plugin 0.1.2-1

tam7t commented 4 years ago

It seems like this uses the org.kde.Platform/x86_64/5.14 runtime which has pipewire 0.2.

$ flatpak run org.kde.Platform/x86_64/5.14
[📦 org.kde.Platform ~]$ ldd `which pipewire-cli`
    linux-vdso.so.1 (0x00007fff30eb1000)
    libpipewire-0.2.so.1 => /usr/lib/x86_64-linux-gnu/libpipewire-0.2.so.1 (0x00007f61bdf08000)
    libpthread.so.0 => /usr/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f61bdee6000)
    libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f61bdd1d000)
    libdl.so.2 => /usr/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f61bdd17000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f61bdf68000)

But that fedora32 ships with 0.3.2

$ pipewire -v
pipewire
Compiled with libpipewire 0.3.2
Linked with libpipewire 0.3.2

These 2 version seem to have different state machines and the "started" signal is never sent. Compared the output of gstreamer pipewiresrc debugs of the obs and an example python script.

$ GST_DEBUG="pipewiresrc:5" flatpak run com.obsproject.Studio --verbose --unfiltered_log 2>&1 | grep wait_negotiated
0:00:03.209361115     2 0x55a0d98fa120 DEBUG            pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now unconnected
0:00:03.209740483     2 0x55a0d98fa120 DEBUG            pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now connecting
0:00:03.210437380     2 0x55a0d98fa120 DEBUG            pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now configure
0:00:03.210627427     2 0x55a0d98fa120 DEBUG            pipewiresrc gstpipewiresrc.c:537:wait_negotiated:<pipewiresrc0> waiting for started signal, state now ready

but a different script

$ GST_DEBUG="pipewiresrc:5" python xdp-remote-deskto.py 2>&1 | grep wait_negotiated
0:00:02.704894866 13980 0x55cb6b140c90 DEBUG            pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now unconnected
0:00:02.706109490 13980 0x55cb6b140c90 DEBUG            pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now connecting
0:00:02.709037790 13980 0x55cb6b140c90 DEBUG            pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now paused
0:00:02.731586576 13980 0x55cb6b140c90 DEBUG            pipewiresrc gstpipewiresrc.c:532:wait_negotiated:<pipewiresrc0> waiting for started signal, state now streaming
0:00:02.731592993 13980 0x55cb6b140c90 DEBUG            pipewiresrc gstpipewiresrc.c:543:wait_negotiated:<pipewiresrc0> got started signal
jvnknvlgl commented 4 years ago

So you suggest that the actual issue is in the KDE platform and not OBS? Would it be possible for OBS to use it's own version of Pipewire instead of relying on the version provided by the KDE platform?

Or, @GeorgesStavracas, how does one go about adding your extension to the 'regular' (non-Flatpak) version of OBS?

GeorgesStavracas commented 4 years ago

I'm pondering about how to fix this. The thing is that Pipewire 0.2 was still under very active development, and is slightly incompatible with Pipewire 0.3. Pipewire 0.3 is the pipewire version everyone should be using. but that's just not a reality right now: Ubuntu and Debian don't even package 0.3 yet. Here's a small table of what works and what doesn't work:

Producer Consumer Works?
0.2 0.2
0.2 0.3
0.3 0.2
0.3 0.3

In this context, the producer is the host system compositor (GNOME Shell, KDE, wlroots-based compositor, etc) and the consumer is OBS Studio. We can't simply ship a more recent Pipewire in the OBS Studio Flatpak since it'd be the only combination that can not work.

Or, @GeorgesStavracas, how does one go about adding your extension to the 'regular' (non-Flatpak) version of OBS?

You can download and install it by yourself, or use distro packages if they're available.

jvnknvlgl commented 4 years ago

You can download and install it by yourself, or use distro packages if they're available.

I tried this, but it seems that the version on Flathub does some other things differently compared to the version on RPMFusion so the latter does not work at all on Wayland (it just shows a transparent window, and your extension also only records a black screen). Maybe I will find a solution another time.

Anyway: would it be a possibility to ship a version of OBS Studio with Pipewire 0.3 on the Flathub Beta repository?

GeorgesStavracas commented 4 years ago

That's a good idea, @jvnknvlgl. I tentatively created a beta with PipeWire 0.3. It's not published to flathub-beta yet, it'll probably be published in ~3h from now. Meanwhile, you can try the test build with:

$ flatpak install https://dl.flathub.org/build-repo/18910/com.obsproject.Studio.flatpakref

It seems like it's working here.

jvnknvlgl commented 4 years ago

I installed it from Flathub Beta, and it works! Thanks a lot for your effort!

GeorgesStavracas commented 4 years ago

Yay :)

jvnknvlgl commented 4 years ago

Do we consider this issue to be fixed, as it cannot really be fixed in the general release as of right now? Or do we want to wait until Pipewire 0.3 has seen a broader release, e.g. Debian and Ubuntu ship it?

lionirdeadman commented 4 years ago

I'd consider keeping it open for people to see the issue and solution until wider adoption of 0.3

doraskayo commented 4 years ago

I opened pipewire/pipewire/-/issues/240 to raise this issue with the PipeWire project.

fourstepper commented 4 years ago

I can still reproduce this with OBS installed from the standard flathub repositories, beta repos work - thank you for the work!

takluyver commented 4 years ago

I wasn't sure how to use the beta repo, so now that I've found out (from this blog post), I'll summarise for anyone else in the same boat:

flatpak remote-add flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
flatpak install flathub-beta com.obsproject.Studio

Once that has finished, launching OBS normally should use the beta version.

BrunoVernay commented 3 years ago

I guess it could be closed now?

jvnknvlgl commented 3 years ago

Yep, the normal version works fine for me these days.