The issue is that SoundManager gets into an infinite loop if there are no sound devices on the system.
Patrick sent a backtrace where the relevant part is this:
.... infinite loop continues until SIGSEGV from stack overflow...
#45078 0x00007ffff6529281 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#45079 0x0000000000789916 in SoundManager::queryDevices (this=0xf16e20)
at src/soundmanager.cpp:373
#45080 0x000000000078a328 in SoundManager::getDeviceList (this=0xf16e20,
filterAPI=..., bOutputDevices=true, bInputDevices=false)
at src/soundmanager.cpp:161
#45081 0x000000000047a10c in DlgPrefSound::refreshDevices (this=0x170eca0)
at src/dlgprefsound.cpp:404
#45082 0x0000000000845878 in DlgPrefSound::qt_static_metacall (_o=0x170eca0,
_id=17, _a=0x7fffffffc7c0, _c=<optimized out>)
at lin64_build/moc_dlgprefsound.cc:100
#45083 0x00007ffff6529281 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#45084 0x0000000000789916 in SoundManager::queryDevices (this=0xf16e20)
at src/soundmanager.cpp:373
#45085 0x000000000078a328 in SoundManager::getDeviceList (this=0xf16e20,
filterAPI=..., bOutputDevices=true, bInputDevices=false)
at src/soundmanager.cpp:161
#45086 0x0000000000795462 in SoundManagerConfig::filterOutputs (this=0xf16e88,
soundManager=0xf16e20) at src/soundmanagerconfig.cpp:247
#45087 0x000000000078c37a in SoundManager::setupDevices (this=0xf16e20)
at src/soundmanager.cpp:390
#45088 0x0000000000587ec5 in MixxxApp::MixxxApp (this=0xef5020,
pApp=0x7fffffffdcf0, args=...) at src/mixxx.cpp:404
#45089 0x000000000043c593 in main (argc=3, argv=0x7fffffffde98)
at src/main.cpp:290
SoundManager::getDeviceList does not call queryDevices() unless there are no sound devices detected. Since queryDevices() does not produce any sound devices, the next time getDeviceList is called (which is invoked by signal/slot) the loop continues.
The issue is that SoundManager gets into an infinite loop if there are no sound devices on the system.
Patrick sent a backtrace where the relevant part is this:
.... infinite loop continues until SIGSEGV from stack overflow... :activate( QObject* , QMetaObject const*, int, void**) () from /usr/lib/ x86_64- linux-gnu/ libQtCore. so.4 :queryDevices (this=0xf16e20) r.cpp:373 :getDeviceList (this=0xf16e20, true, bInputDevices= false) r.cpp:161 :refreshDevices (this=0x170eca0) d.cpp:404 :qt_static_ metacall (_o=0x170eca0, moc_dlgprefsoun d.cc:100 :activate( QObject* , QMetaObject const*, int, void**) () from /usr/lib/ x86_64- linux-gnu/ libQtCore. so.4 :queryDevices (this=0xf16e20) r.cpp:373 :getDeviceList (this=0xf16e20, true, bInputDevices= false) r.cpp:161 fig::filterOutp uts (this=0xf16e88, r=0xf16e20) at src/soundmanage rconfig. cpp:247 :setupDevices (this=0xf16e20) r.cpp:390 0x7fffffffdcf0, args=...) at src/mixxx.cpp:404 de98)
#45078 0x00007ffff6529281 in QMetaObject:
#45079 0x0000000000789916 in SoundManager:
at src/soundmanage
#45080 0x000000000078a328 in SoundManager:
filterAPI=..., bOutputDevices=
at src/soundmanage
#45081 0x000000000047a10c in DlgPrefSound:
at src/dlgprefsoun
#45082 0x0000000000845878 in DlgPrefSound:
_id=17, _a=0x7fffffffc7c0, _c=<optimized out>)
at lin64_build/
#45083 0x00007ffff6529281 in QMetaObject:
#45084 0x0000000000789916 in SoundManager:
at src/soundmanage
#45085 0x000000000078a328 in SoundManager:
filterAPI=..., bOutputDevices=
at src/soundmanage
#45086 0x0000000000795462 in SoundManagerCon
soundManage
#45087 0x000000000078c37a in SoundManager:
at src/soundmanage
#45088 0x0000000000587ec5 in MixxxApp::MixxxApp (this=0xef5020,
pApp=
#45089 0x000000000043c593 in main (argc=3, argv=0x7fffffff
at src/main.cpp:290
SoundManager: :getDeviceList does not call queryDevices() unless there are no sound devices detected. Since queryDevices() does not produce any sound devices, the next time getDeviceList is called (which is invoked by signal/slot) the loop continues.