Skip to content

Crash in PulseAudio init on connecting #226

@zb140

Description

@zb140

Describe the Bug

I'm using Sunshine in the context of Games on Whales. It's been working great for a while using the older, pre-fork Sunshine, but recently I tried to run with version 0.14.0 and I get a segfault as soon as I try to connect with Moonlight. I grabbed this stacktrace with gdb:

Thread 23 "sunshine-dbg" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffa4804640 (LWP 155)]
0x00007ffff5e15f45 in ?? () from /usr/lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ffff5e15f45 in ?? () from /usr/lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff6135589 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x0000555555fd1513 in platf::pa::server_t::get_default_sink_name[abi:cxx11]()::{lambda(pa_context*, pa_server_info const*)#1}::operator()(pa_context*, pa_server_info const*) const (
    __closure=0x7fffceffbf20, ctx=0x7fffb4001530, server_info=0x7fffa4803230) at /sunshine/sunshine/platform/linux/audio.cpp:400
#3  0x0000555555fd5e06 in std::__invoke_impl<void, platf::pa::server_t::get_default_sink_name()::{lambda(pa_context*, pa_server_info const*)#1}&, pa_context*, pa_server_info const*>(std::__invoke_other, platf::pa::server_t::get_default_sink_name()::{lambda(pa_context*, pa_server_info const*)#1}&, pa_context*&&, pa_server_info const*&&) (__f=...)
    at /usr/include/c++/10/bits/invoke.h:60
#4  0x0000555555fd5281 in std::__invoke_r<void, platf::pa::server_t::get_default_sink_name()::{lambda(pa_context*, pa_server_info const*)#1}&, pa_context*, pa_server_info const*>(platf::pa::server_t::get_default_sink_name()::{lambda(pa_context*, pa_server_info const*)#1}&, pa_context*&&, pa_server_info const*&&) (__fn=...) at /usr/include/c++/10/bits/invoke.h:110
#5  0x0000555555fd4426 in std::_Function_handler<void (pa_context*, pa_server_info const*), platf::pa::server_t::get_default_sink_name()::{lambda(pa_context*, pa_server_info const*)#1}>::_M_invoke(std::_Any_data const&, pa_context*&&, pa_server_info const*&&) (__functor=..., __args#0=@0x7fffa48031c0: 0x7fffb4001530, __args#1=@0x7fffa48031b8: 0x7fffa4803230)
    at /usr/include/c++/10/bits/std_function.h:291
#6  0x0000555555fd4515 in std::function<void (pa_context*, pa_server_info const*)>::operator()(pa_context*, pa_server_info const*) const (this=0x7fffceffbf20, __args#0=0x7fffb4001530,
    __args#1=0x7fffa4803230) at /usr/include/c++/10/bits/std_function.h:622
#7  0x0000555555fd336d in platf::pa::cb<pa_server_info*> (ctx=0x7fffb4001530, i=0x7fffa4803230, userdata=0x7fffceffbf20) at /sunshine/sunshine/platform/linux/audio.cpp:135
#8  0x00007ffff6220579 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#9  0x00007ffff1ea6df3 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-14.2.so
#10 0x00007ffff1ea780f in pa_pdispatch_run () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-14.2.so
#11 0x00007ffff6220873 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#12 0x00007ffff1eab8fd in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-14.2.so
#13 0x00007ffff1ead48f in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-14.2.so
#14 0x00007ffff6234603 in pa_mainloop_dispatch () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#15 0x00007ffff6234c62 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#16 0x00007ffff6234d00 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
#17 0x0000555555fcfd61 in platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}::operator()(pa_mainloop*) const (__closure=0x7fffb4003a28, loop=0x7fffb4001430)
    at /sunshine/sunshine/platform/linux/audio.cpp:232
#18 0x0000555555fd7560 in std::__invoke_impl<void, platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}, pa_mainloop*>(std::__invoke_other, platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}&&, pa_mainloop*&&) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#19 0x0000555555fd74bb in std::__invoke<platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}, pa_mainloop*>(platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}&&, pa_mainloop*&&) (
    __fn=...) at /usr/include/c++/10/bits/invoke.h:95
#20 0x0000555555fd741b in std::thread::_Invoker<std::tuple<platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}, pa_mainloop*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (
    this=0x7fffb4003a28) at /usr/include/c++/10/thread:264
#21 0x0000555555fd7376 in std::thread::_Invoker<std::tuple<platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}, pa_mainloop*> >::operator()() (this=0x7fffb4003a28)
    at /usr/include/c++/10/thread:271
#22 0x0000555555fd730e in std::thread::_State_impl<std::thread::_Invoker<std::tuple<platf::pa::server_t::init()::{lambda(pa_mainloop*)#2}, pa_mainloop*> > >::_M_run() (
    this=0x7fffb4003a20) at /usr/include/c++/10/thread:215
#23 0x00007ffff60c7694 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#24 0x00007ffff7fa1450 in start_thread () from /usr/lib/x86_64-linux-gnu/libpthread.so.0
#25 0x00007ffff5dadd53 in clone () from /usr/lib/x86_64-linux-gnu/libc.so.6

Expected Behavior

No response

Additional Context

My server_info pointer is apparently non-null but still invalid, because this is the line that's crashing: https://github.com/SunshineStream/Sunshine/blob/70ae7a2fa9b33173eb949c86ec42a96e7b9e8c25/sunshine/platform/linux/audio.cpp#L400. I haven't done any further digging yet.

Sunshine Host Operating System and Version

unRAID 6.10.3 / Docker, Dockerfile based on Ubuntu 21.04

Architecture

64-bit

Sunshine Version

Built from source at 70ae7a2

GPU Type

Nvidia

GPU Model

GeForce GTX 1660 Ti

GPU Driver/Mesa Version

470.129.06

Capture Method (Linux Only)

X11

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions