overte icon indicating copy to clipboard operation
overte copied to clipboard

Audio broken with gdb

Open JulianGro opened this issue 9 months ago • 3 comments

When running master with gdb, the audio devices don't seem to work at all. The exact same build works without gdb. The devices don't work in the device list, and there is no audio output or input. Image

I wonder if this has anything to do with the audio issue we encountered on Windows. Maybe gdb makes one of the threads run slower and cause this?

This is on commit 4e6575a9170438e618c680b52c6830b41d815ff9 by the way.

Apparently, if I leave it running for a couple of minutes, audio starts working, but the devices list is still empty. It breaks again after some time as well.

JulianGro avatar Apr 11 '25 18:04 JulianGro

Apparently it worked before, might be Application.cpp refactor?

daleglass avatar Apr 12 '25 20:04 daleglass

I think it's a bug in Qt or GDB. QAudioDeviceInfo::availableDevices() completely freezes in dl_open_worker when GDB is running. I don't think it's related to refactor, since if I put it at the beginning of main(), it freezes main thread too. The whole audio thread is frozen, so audio devices don't' show up:

dl_open_worker 0x00007ffff7fd29a6
getAvailableDevices AudioClient.cpp:107
getNamedAudioDeviceForMode AudioClient.cpp:466
defaultAudioDeviceForMode AudioClient.cpp:537
AudioClient::start AudioClient.cpp:826

ksuprynowicz avatar Apr 17 '25 22:04 ksuprynowicz

It's deep in Qt, full backtrace:

#0  __GI__dl_debug_state () at ./elf/dl-debug.c:117
#1  0x00007ffff7fd29a6 in dl_open_worker (a=a@entry=0x7fffffff9420) at ./elf/dl-open.c:775
#2  0x00007ffff7fc9399 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffff9400, operate=operate@entry=0x7ffff7fd2930 <dl_open_worker>, args=args@entry=0x7fffffff9420)
    at ./elf/dl-catch.c:241
#3  0x00007ffff7fd2d68 in _dl_open
    (file=0x7ffff12c4520 "/lib/x86_64-linux-gnu/libasound.so.2", mode=<optimized out>, caller_dlopen=0x7fffdf8a7a1c <__snd_dlopen+76>, nsid=<optimized out>, argc=2, argv=0x7fffffffd4d8, env=0x7fffffffd4f0) at ./elf/dl-open.c:874
#4  0x00007fffefa99258 in dlopen_doit (a=a@entry=0x7fffffff9690) at ./dlfcn/dlopen.c:56
#5  0x00007ffff7fc9399 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffff95f0, operate=0x7fffefa99200 <dlopen_doit>, args=0x7fffffff9690) at ./elf/dl-catch.c:241
#6  0x00007ffff7fc94bf in _dl_catch_error (objname=0x7fffffff9648, errstring=0x7fffffff9650, mallocedp=0x7fffffff9647, operate=<optimized out>, args=<optimized out>) at ./elf/dl-catch.c:260
#7  0x00007fffefa98d67 in _dlerror_run (operate=operate@entry=0x7fffefa99200 <dlopen_doit>, args=args@entry=0x7fffffff9690) at ./dlfcn/dlerror.c:138
#8  0x00007fffefa99309 in dlopen_implementation (file=<optimized out>, mode=<optimized out>, dl_caller=<optimized out>) at ./dlfcn/dlopen.c:71
#9  ___dlopen (file=<optimized out>, mode=<optimized out>) at ./dlfcn/dlopen.c:81
#10 0x00007fffdf8a7a1c in __snd_dlopen (name=<optimized out>, mode=mode@entry=2, errbuf=errbuf@entry=0x7fffffffa770 "\220o\027VUU", errbuflen=errbuflen@entry=256) at ./src/dlmisc.c:155
#11 0x00007fffdf8a1931 in _snd_config_evaluate (src=<optimized out>, root=0x555556176f90, private_data=0x0, fcn=<optimized out>, pass=<optimized out>, dst=<optimized out>) at ./src/conf.c:5184
#12 0x00007fffdf89fb87 in snd_config_walk (src=0x555556177210, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4901
#13 snd_config_walk (src=0x555556177210, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#14 0x00007fffdf89fbee in snd_config_walk (src=0x5555561db730, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4908
#15 snd_config_walk (src=0x5555561db730, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#16 0x00007fffdf8a499e in snd_func_concat (dst=0x7fffffffaa58, root=0x555556176f90, src=0x5555561dc520, private_data=0x0) at ./src/confmisc.c:420
#17 0x00007fffdf8a197d in _snd_config_evaluate (src=<optimized out>, root=0x555556176f90, private_data=0x0, fcn=<optimized out>, pass=<optimized out>, dst=<optimized out>) at ./src/conf.c:5203
#18 0x00007fffdf89fb87 in snd_config_walk (src=0x5555561dc520, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4901
#19 snd_config_walk (src=0x5555561dc520, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#20 0x00007fffdf8a606a in snd_func_refer (dst=0x7fffffffacb8, root=0x555556176f90, src=0x5555561dbdd0, private_data=0x0) at ./src/confmisc.c:1340
--Type <RET> for more, q to quit, c to continue without paging--c
#21 0x00007fffdf8a197d in _snd_config_evaluate (src=<optimized out>, root=0x555556176f90, private_data=0x0, fcn=<optimized out>, pass=<optimized out>, dst=<optimized out>) at ./src/conf.c:5203
#22 0x00007fffdf89fb87 in snd_config_walk (src=0x5555561dbdd0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4901
#23 snd_config_walk (src=0x5555561dbdd0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#24 0x00007fffdf8a0803 in snd_config_expand
    (config=<optimized out>, root=root@entry=0x555556176f90, args=args@entry=0x5555561dbc29 "CARD=0", private_data=private_data@entry=0x0, result=result@entry=0x7fffffffb048) at ./src/conf.c:5726
#25 0x00007fffdf8a182c in snd_config_search_definition (config=config@entry=0x555556176f90, base=base@entry=0x0, name=<optimized out>, result=result@entry=0x7fffffffb048) at ./src/conf.c:5795
#26 0x00007fffdf8a601e in snd_func_refer (dst=0x7fffffffb048, root=0x555556176f90, src=0x5555561dacd0, private_data=0x0) at ./src/confmisc.c:1368
#27 0x00007fffdf8a197d in _snd_config_evaluate (src=<optimized out>, root=0x555556176f90, private_data=0x0, fcn=<optimized out>, pass=<optimized out>, dst=<optimized out>) at ./src/conf.c:5203
#28 0x00007fffdf89fb87 in snd_config_walk (src=0x5555561dacd0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4901
#29 snd_config_walk (src=0x5555561dacd0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#30 0x00007fffdf89fbee in snd_config_walk (src=0x5555561dbc60, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4908
#31 snd_config_walk (src=0x5555561dbc60, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#32 0x00007fffdf89fbee in snd_config_walk (src=0x5555561da9b0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4908
#33 snd_config_walk (src=0x5555561da9b0, root=0x555556176f90, dst=0x0, callback=0x7fffdf8a1d80 <_snd_config_evaluate>, fcn=0x0, private_data=0x0) at ./src/conf.c:4889
#34 0x00007fffdf8a0803 in snd_config_expand (config=<optimized out>, root=root@entry=0x555556176f90, args=args@entry=0x0, private_data=private_data@entry=0x0, result=result@entry=0x7fffffffb3e8)
    at ./src/conf.c:5726
#35 0x00007fffdf8a182c in snd_config_search_definition
    (config=config@entry=0x555556176f90, base=base@entry=0x7ffff7e06006 "pcm", name=name@entry=0x5555561cad90 "surround21", result=result@entry=0x7fffffffb3e8) at ./src/conf.c:5795
#36 0x00007fffdf8aa115 in try_config (config=config@entry=0x555556176f90, list=list@entry=0x7fffffffb4b0, base=0x7ffff7e06006 "pcm", name=<optimized out>) at ./src/control/namehint.c:270
#37 0x00007fffdf8ab2a5 in add_software_devices (config=<optimized out>, rw_config=0x555556176f90, list=0x7fffffffb4b0) at ./src/control/namehint.c:550
#38 snd_device_name_hint (card=<optimized out>, iface=<optimized out>, hints=0x7fffffffb5b8) at ./src/control/namehint.c:630
#39 0x00007ffff7dfe883 in QAlsaAudioDeviceInfo::checkSurround (this=0x55555615ae80) at ./src/plugins/alsa/qalsaaudiodeviceinfo.cpp:383
#40 0x00007ffff7dfdda9 in non-virtual thunk to QAlsaPlugin::createDeviceInfo(QByteArray const&, QAudio::Mode) () at ./src/plugins/alsa/qalsaplugin.h:63
#41 0x00007ffff7d3ff69 in QAudioDeviceFactory::audioDeviceInfo (realm=..., handle=..., mode=mode@entry=QAudio::AudioInput) at audio/qaudiodevicefactory.cpp:204
#42 0x00007ffff7d3c287 in QAudioDeviceInfoPrivate::QAudioDeviceInfoPrivate (this=0x55555614ead0, r=..., h=..., m=QAudio::AudioInput) at audio/qaudiodeviceinfo.cpp:68
#43 QAudioDeviceInfo::QAudioDeviceInfo (this=this@entry=0x7fffffffb6e0, realm=..., handle=..., mode=mode@entry=QAudio::AudioInput) at audio/qaudiodeviceinfo.cpp:443
#44 0x00007ffff7d40e3d in QAudioDeviceFactory::availableDevices (mode=mode@entry=QAudio::AudioInput) at audio/qaudiodevicefactory.cpp:135
#45 0x00007ffff7d3c1df in QAudioDeviceInfo::availableDevices (mode=mode@entry=QAudio::AudioInput) at audio/qaudiodeviceinfo.cpp:435
#46 0x00005555556fbb9c in main (argc=<optimized out>, argv=0x7fffffffd4d8) at /home/ksuprynowicz/overte/overte/interface/src/main.cpp:53

ksuprynowicz avatar Apr 18 '25 10:04 ksuprynowicz

I believe the same issue might sometimes happen without GDB for me on 2025.05.1-rc1.

JulianGro avatar May 03 '25 16:05 JulianGro