id,summary,reporter,owner,description,type,status,priority,component,version,resolution,keywords,cc,game 7011,RINGWORLD2: Deadlock in the sound code,bgK,csnover,"{{{#!Markdown ScummVM 1.8.0git6411-gf94153f (Feb 1 2016 21:33:04) Platform : Linux x64 Game : R2R demo Steps to reproduce : In the first room, play a bit with the computer's menus. The game freezes after a few clicks with a sound related deadlock. Backtrace for the first thread: ~~~~ #0 0x00007ffff4755cfc in __lll_lock_wait () from /usr/lib/libpthread.so.0 No symbol table info available. #1 0x00007ffff474fbb2 in pthread_mutex_lock () from /usr/lib/libpthread.so.0 No symbol table info available. #2 0x00007ffff7b92a5e in ?? () from /usr/lib/libSDL2-2.0.so.0 No symbol table info available. #3 0x0000000001b60b24 in SdlMutexManager::lockMutex (this=0x2951ce0, mutex=0x2ae9c00) at backends/mutex/sdl/sdl-mutex.cpp:36 No locals. #4 0x0000000001b4d5f8 in ModularBackend::lockMutex (this=0x28fcdf0, mutex=0x2ae9c00) at backends/modular-backend.cpp:222 __PRETTY_FUNCTION__ = ""virtual void ModularBackend::lockMutex(OSystem::MutexRef)"" #5 0x0000000001cba40b in Common::StackLock::lock (this=0x7ffffffb73b0) at common/mutex.cpp:68 No locals. #6 0x0000000001cba38a in Common::StackLock::StackLock (this=0x7ffffffb73b0, mutex=..., mutexName=0x0) at common/mutex.cpp:57 No locals. #7 0x0000000001c48146 in Audio::MixerImpl::isSoundHandleActive (this=0x2ae9ec0, handle=...) at audio/mixer.cpp:452 lock = {_mutex = 0x2ae9c00, _mutexName = 0x0} index = 32767 #8 0x00000000018e7ae8 in TsAGE::SoundBlasterDriver::updateVoice (this=0x2d71140, channel=0) at engines/tsage/sound.cpp:3098 No locals. #9 0x00000000018e1490 in TsAGE::SoundManager::sfRethinkVoiceTypes () at engines/tsage/sound.cpp:1272 vse = @0x2d712a0: {_field4 = -1, _field5 = 0, _field6 = 0, _sound = 0x3058808, _channelNum = 0, _priority = 0, _sound2 = 0x3058808, _channelNum2 = 0, _priority2 = 0, _sound3 = 0x0, _channelNum3 = 0, _priority3 = 0} sound = 0x3058808 vse2 = @0x2d712a0: {_field4 = -1, _field5 = 0, _field6 = 0, _sound = 0x3058808, _channelNum = 0, _priority = 0, _sound2 = 0x3058808, _channelNum2 = 0, _priority2 = 0, _sound3 = 0x0, _channelNum3 = 0, _priority3 = 0} driver = 0x2d71140 idx = 0 idx2 = 0 vs = 0x2d71220 voiceIndex = 3 priorityOffset = 32 __PRETTY_FUNCTION__ = ""static void TsAGE::SoundManager::sfRethinkVoiceTypes()"" #10 0x00000000018def7d in TsAGE::SoundManager::sfAddToPlayList (sound=0x3058808) at engines/tsage/sound.cpp:624 slock = {_mutex = 0x2caf3d0, _mutexName = 0x0} #11 0x00000000018de3ac in TsAGE::SoundManager::addToPlayList (this=0x2d72788, sound=0x3058808) at engines/tsage/sound.cpp:357 No locals. #12 0x00000000018e2740 in TsAGE::Sound::play (this=0x3058808, soundNum=14) at engines/tsage/sound.cpp:1561 No locals. #13 0x00000000018e5773 in TsAGE::ASound::play (this=0x30587f8, soundNum=14, endAction=0x0, volume=127) at engines/tsage/sound.cpp:2467 No locals. #14 0x000000000183367b in TsAGE::Ringworld2::Scene125::Icon::process (this=0x3059848, event=...) at engines/tsage/ringworld2/ringworld2_scenes0.cpp:465 regionIndex = 2 scene = 0x30578c0 #15 0x00000000018353d7 in TsAGE::Ringworld2::Scene125::process (this=0x30578c0, event=...) at engines/tsage/ringworld2/ringworld2_scenes0.cpp:837 No locals. #16 0x00000000017646a4 in TsAGE::SceneHandler::process (this=0x2cafdf0, event=...) at engines/tsage/core.cpp:4336 No locals. #17 0x000000000180cd48 in TsAGE::Ringworld2::SceneHandlerExt::process (this=0x2cafdf0, event=...) at engines/tsage/ringworld2/ringworld2_logic.cpp:633 scene = 0x30578c0 #18 0x0000000001764e9c in TsAGE::SceneHandler::dispatch (this=0x2cafdf0) at engines/tsage/core.cpp:4472 event = {eventType = TsAGE::EVENT_BUTTON_DOWN, mousePos = {x = 78, y = 30}, btnState = 0, kbd = {keycode = Common::KEYCODE_INVALID, ascii = 0, flags = 0 '\000'}, ctr = 0, gfxMan = 0x7c00000077, handled = false} #19 0x000000000180cd7f in TsAGE::Ringworld2::SceneHandlerExt::dispatch (this=0x2cafdf0) at engines/tsage/ringworld2/ringworld2_logic.cpp:638 No locals. #20 0x00000000017642f9 in TsAGE::GameHandler::execute (this=0x2cafdf0) at engines/tsage/core.cpp:4266 No locals. #21 0x00000000018dcefb in TsAGE::Game::execute (this=0x2cafdd0) at engines/tsage/scenes.cpp:617 ~~~~ Backtrace for the second thread: ~~~~ #0 0x00007ffff4755cfc in __lll_lock_wait () from /usr/lib/libpthread.so.0 No symbol table info available. #1 0x00007ffff474fbb2 in pthread_mutex_lock () from /usr/lib/libpthread.so.0 No symbol table info available. #2 0x00007ffff7b92a5e in ?? () from /usr/lib/libSDL2-2.0.so.0 No symbol table info available. #3 0x0000000001b60b24 in SdlMutexManager::lockMutex (this=0x2951ce0, mutex=0x2caf3d0) at backends/mutex/sdl/sdl-mutex.cpp:36 No locals. #4 0x0000000001b4d5f8 in ModularBackend::lockMutex (this=0x28fcdf0, mutex=0x2caf3d0) at backends/modular-backend.cpp:222 __PRETTY_FUNCTION__ = ""virtual void ModularBackend::lockMutex(OSystem::MutexRef)"" #5 0x0000000001cba40b in Common::StackLock::lock (this=0x7fffdffeab90) at common/mutex.cpp:68 No locals. #6 0x0000000001cba38a in Common::StackLock::StackLock (this=0x7fffdffeab90, mutex=..., mutexName=0x0) at common/mutex.cpp:57 No locals. #7 0x00000000018e76ba in TsAGE::AdlibSoundDriver::onTimer (this=0x2d654d0) at engines/tsage/sound.cpp:3017 slock1 = {_mutex = 0x2caf3a0, _mutexName = 0x0} slock2 = {_mutex = 0x2caf3d0, _mutexName = 0x0} #8 0x00000000018e9b92 in Common::Functor0Mem::operator() (this=0x2d806d0) at ./common/func.h:388 No locals. #9 0x0000000001c38584 in OPL::EmulatedOPL::readBuffer (this=0x2cb0160, buffer=0x7fffc8001070, numSamples=2048) at audio/fmopl.cpp:295 stereoFactor = 1 len = 1504 step = 800 #10 0x0000000001c8d4b9 in Audio::CopyRateConverter::flow (this=0x2d80760, input=..., obuf=0x2adea90, osamp=2048, vol_l=256, vol_r=256) at audio/rate.cpp:315 __PRETTY_FUNCTION__ = ""int Audio::CopyRateConverter::flow(Audio::AudioStream&, Audio::st_sample_t*, Audio::st_size_t, Audio::st_volume_t, Audio::st_volume_t) [with bool stereo = false; bool reverseSte""... ptr = 0x2d80748 len = 32767 ostart = 0x2adea90 #11 0x0000000001c48b16 in Audio::Channel::mix (this=0x2d80700, data=0x2adea90, len=2048) at audio/mixer.cpp:621 __PRETTY_FUNCTION__ = ""int Audio::Channel::mix(int16*, uint)"" res = 0 #12 0x0000000001c475e6 in Audio::MixerImpl::mixCallback (this=0x2ae9ec0, samples=0x2adea90 """", len=2048) at audio/mixer.cpp:293 i = 0 __PRETTY_FUNCTION__ = ""int Audio::MixerImpl::mixCallback(byte*, uint)"" lock = {_mutex = 0x2ae9c00, _mutexName = 0x0} buf = 0x2adea90 res = 0 tmp = 0 #13 0x0000000001b60a1b in SdlMixerManager::callbackHandler (this=0x2a80c70, samples=0x2adea90 """", len=8192) at backends/mixer/sdl/sdl-mixer.cpp:164 __PRETTY_FUNCTION__ = ""virtual void SdlMixerManager::callbackHandler(byte*, int)"" #14 0x0000000001b60a77 in SdlMixerManager::sdlCallback (this_=0x2a80c70, samples=0x2adea90 """", len=8192) at backends/mixer/sdl/sdl-mixer.cpp:171 manager = 0x2a80c70 __PRETTY_FUNCTION__ = ""static void SdlMixerManager::sdlCallback(void*, byte*, int)"" ~~~~ The backtrace is with SDL2, but it happens just the same with SDL1. }}} {{{#!div style=""font-size: 75%"" Ticket imported from: bugs/7011. }}}",defect,closed,blocker,Engine: TsAGE,,fixed,"has-backtrace, has-pull-request",,Return to Ringworld