obsproject / obs-studio

OBS Studio - Free and open source software for live streaming and screen recording
https://obsproject.com
GNU General Public License v2.0
60.62k stars 8.02k forks source link

Segmentation fault when selecting any "Audio Monitoring" for any Audio Mixer source #2586

Closed metaleap closed 4 years ago

metaleap commented 4 years ago

Works superb overall! Terrific prog. But would like to hear the music source playing in my scene during streaming.

Observed: segfault, expected: graceful / non-crashing handling of the corner-case that would currently accidentally access invalid memory here.

Local setup: Void Linux x86_64 , Kernel 4.19.111_1 with Alsa installed but no Pulse Audio; obs --version gives OBS Studio - 24.0.5 (linux)

To reproduce:

Here's the full copy-pasted-from-terminal stdout+stderr of such a short crash-provoking session:

stdout-stderr.txt

Naturally nothing substantial makes it into the log anymore as OBS hits this fatal crashing condition, but still attached also a log file from such a short crash-provoking session:

2020-03-27 17-05-53.txt

kkartaltepe commented 4 years ago

Please provide a backtrace from the crash using gdb.

metaleap commented 4 years ago

Don't have a debug build here of course. But maybe the following from a gdb odb and then run helps already?

gdb-obs.txt

kkartaltepe commented 4 years ago

Please run the backtrace command bt

and post the results.

metaleap commented 4 years ago

Alright thx for the hint, here goes:

[New Thread 0x7fff9f85a700 (LWP 8353)]
[New Thread 0x7fff9f059700 (LWP 8354)]
[New Thread 0x7fff9e858700 (LWP 8355)]
[New Thread 0x7fff9e057700 (LWP 8356)]
Attempted path: share/obs/obs-studio/images/overflow.png
Attempted path: /usr/share/obs/obs-studio/images/overflow.png
[Thread 0x7fffb9e02700 (LWP 8348) exited]
[New Thread 0x7fff87a4a700 (LWP 8490)]

Thread 1 "obs" received signal SIGSEGV, Segmentation fault.
__strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:65
65  ../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory.
(gdb) bt
#0  __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:65
#1  0x00007ffff5f5be9f in get_default_id () from /usr/lib/libobs.so.0
#2  0x00007ffff5f5c9a9 in ?? () from /usr/lib/libobs.so.0
#3  0x00007ffff5f5d58b in audio_monitor_create () from /usr/lib/libobs.so.0
#4  0x00007ffff5f1f7f1 in obs_source_set_monitoring_type () from /usr/lib/libobs.so.0
#5  0x0000555555727fb5 in OBSAdvAudioCtrl::monitoringTypeChanged(int) ()
#6  0x00007ffff5645758 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#7  0x00007ffff61f8fd1 in QComboBox::currentIndexChanged(int) () from /usr/lib/libQt5Widgets.so.5
#8  0x00007ffff61fb232 in ?? () from /usr/lib/libQt5Widgets.so.5
#9  0x00007ffff61fd99d in ?? () from /usr/lib/libQt5Widgets.so.5
#10 0x00007ffff61fdab9 in ?? () from /usr/lib/libQt5Widgets.so.5
#11 0x00007ffff6203625 in ?? () from /usr/lib/libQt5Widgets.so.5
#12 0x00007ffff5645758 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#13 0x00007ffff61f9082 in QComboBoxPrivateContainer::itemSelected(QModelIndex const&) () from /usr/lib/libQt5Widgets.so.5
#14 0x00007ffff61f973a in QComboBoxPrivateContainer::eventFilter(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007ffff561a503 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#16 0x00007ffff60f2c51 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#17 0x00007ffff60fc433 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#18 0x00007ffff561a7f2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#19 0x00007ffff60fb543 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
#20 0x00007ffff61515a4 in ?? () from /usr/lib/libQt5Widgets.so.5
#21 0x00007ffff6153c04 in ?? () from /usr/lib/libQt5Widgets.so.5
#22 0x00007ffff60f2c62 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#23 0x00007ffff60fc1e0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#24 0x00007ffff561a7f2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#25 0x00007ffff59efbe3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#26 0x00007ffff59f147b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#27 0x00007ffff59cc39b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#28 0x00007fffef413e8a in ?? () from /usr/lib/qt5/plugins/platforms/../../../libQt5XcbQpa.so.5
#29 0x00007ffff20f9c2d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#30 0x00007ffff20fb980 in ?? () from /usr/lib/libglib-2.0.so.0
#31 0x00007ffff20fb9bf in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#32 0x00007ffff5670c11 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#33 0x00007ffff561935b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#34 0x00007ffff5620fc2 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#35 0x00005555555ea976 in main ()
kkartaltepe commented 4 years ago

" attempt to select any of the two non-default choices " What options do you see if you dont have pulse audio on the system?

--edit Sorry misread the reproduction steps.

kkartaltepe commented 4 years ago

Your OBS was built with PA support so it expects PA at runtime. I agree it can probably be handled better.

notr1ch commented 4 years ago

This looks like it was fixed in https://github.com/obsproject/obs-studio/commit/6a7260783ec31a2d7b84ad5d3380917c37456c95 so you will need a more up to date build.

metaleap commented 4 years ago

Thx for checking up on that, will wait for void to package v25!