Opened 7 years ago

Closed 7 years ago

#10207 closed defect (fixed)

TITANIC: Memory leaks in QSoundManager

Reported by: csnover Owned by: dreammaster
Priority: normal Component: Engine: Titanic
Version: Keywords:
Cc: Game: Starship Titanic

Description

valgrind reports from dafioram:

==16727== 176 (32 direct, 144 indirect) bytes in 1 blocks are definitely lost in loss record 2,388 of 2,668
==16727==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16727==    by 0x309EB9: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==16727==    by 0x35D118: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:231)
==16727==    by 0x35CDD1: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:166)
==16727==    by 0x30671B: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==16727==    by 0x30584F: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==16727==    by 0x303F1D: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:168)
==16727==    by 0x215D4C: Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) (game_object.cpp:512)
==16727==    by 0x2FAB95: Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) (auto_music_player_base.cpp:74)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727==    by 0x2BCAEE: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16727==    by 0x343768: Titanic::CGameManager::postLoad(Titanic::CProjectItem*) (game_manager.cpp:104)

==16727== 4,192 (32 direct, 4,160 indirect) bytes in 1 blocks are definitely lost in loss record 2,576 of 2,668
==16727==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16727==    by 0x309EB9: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==16727==    by 0x35D118: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:231)
==16727==    by 0x35CDD1: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:166)
==16727==    by 0x30671B: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==16727==    by 0x30584F: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==16727==    by 0x303F1D: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:168)
==16727==    by 0x216F33: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:803)
==16727==    by 0x216DD6: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:788)
==16727==    by 0x29CC48: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:93)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727==    by 0x2BCAEE: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16727== 

==16727== 1,376,840 bytes in 1 blocks are possibly lost in loss record 2,666 of 2,668
==16727==    at 0x4C2DB2F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16727==    by 0x3098D6: Titanic::CWaveFile::loadSound(Titanic::CString const&) (wave_file.cpp:103)
==16727==    by 0x305580: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:126)
==16727==    by 0x303DDC: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==16727==    by 0x303E9C: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==16727==    by 0x216F33: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:803)
==16727==    by 0x216DD6: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:788)
==16727==    by 0x29CCB8: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:98)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727==    by 0x2BCAEE: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16727==    by 0x29D2CE: Titanic::CGondolierMixer::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) (gondolier_mixer.cpp:191)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727== 

==16727== 1,381,028 (32 direct, 1,380,996 indirect) bytes in 1 blocks are definitely lost in loss record 2,667 of 2,668
==16727==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16727==    by 0x309EB9: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==16727==    by 0x35D118: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:231)
==16727==    by 0x35CDD1: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:166)
==16727==    by 0x30671B: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==16727==    by 0x30584F: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==16727==    by 0x303F1D: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:168)
==16727==    by 0x216F33: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:803)
==16727==    by 0x216DD6: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:788)
==16727==    by 0x29CCB8: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:98)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727==    by 0x2BCAEE: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16727== 

==16727== 4,984,652 (24 direct, 4,984,628 indirect) bytes in 1 blocks are definitely lost in loss record 2,668 of 2,668
==16727==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16727==    by 0x3075EE: Common::List<Titanic::QSoundManagerSound*>::insert(Common::ListInternal::NodeBase*, Titanic::QSoundManagerSound* const&) (list.h:248)
==16727==    by 0x307018: Common::List<Titanic::QSoundManagerSound*>::push_back(Titanic::QSoundManagerSound* const&) (list.h:131)
==16727==    by 0x304FBC: Titanic::QSoundManagerSounds::add(Titanic::CWaveFile*, int, void (*)(Titanic::TTtalker*), Titanic::TTtalker*) (sound_manager.cpp:52)
==16727==    by 0x3066B9: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:421)
==16727==    by 0x30584F: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==16727==    by 0x303F1D: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:168)
==16727==    by 0x216F33: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:803)
==16727==    by 0x216DD6: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:788)
==16727==    by 0x29CC48: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:93)
==16727==    by 0x2BCD49: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16727==    by 0x2BCAEE: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)

Build: 1.10.0git-4914-g294503f516

Change History (13)

comment:1 by dafioram, 7 years ago

Arboretum.
scummvm: 1.10.0git-4971-g8547c89b86

==16918== 72 bytes in 1 blocks are definitely lost in loss record 1,895 of 2,435
==16918==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16918==    by 0x309ED8: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:123)
==16918==    by 0x30876E: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==16918==    by 0x30882E: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==16918==    by 0x218E86: Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) (game_object.cpp:513)
==16918==    by 0x2FF46F: Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) (auto_music_player_base.cpp:74)
==16918==    by 0x2C10F1: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16918==    by 0x2C0E96: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16918==    by 0x3494D6: Titanic::CGameManager::postLoad(Titanic::CProjectItem*) (game_manager.cpp:104)
==16918==    by 0x223080: Titanic::CProjectItem::postLoad() (project_item.cpp:340)
==16918==    by 0x222925: Titanic::CProjectItem::loadGame(int) (project_item.cpp:222)
==16918==    by 0x34D868: Titanic::CMainGameWindow::applicationStarting() (main_game_window.cpp:91)
==16918== 312 (64 direct, 248 indirect) bytes in 2 blocks are definitely lost in loss record 2,343 of 2,435
==16918==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16918==    by 0x30E84B: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==16918==    by 0x362F9E: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:231)
==16918==    by 0x362C57: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:166)
==16918==    by 0x30B0AD: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==16918==    by 0x30A1E1: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==16918==    by 0x3088AF: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:168)
==16918==    by 0x218E86: Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) (game_object.cpp:513)
==16918==    by 0x2FF46F: Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) (auto_music_player_base.cpp:74)
==16918==    by 0x2C10F1: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==16918==    by 0x2C0E96: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==16918==    by 0x3494D6: Titanic::CGameManager::postLoad(Titanic::CProjectItem*) (game_manager.cpp:104)
Last edited 7 years ago by dafioram (previous) (diff)

comment:2 by dafioram, 7 years ago

helmet sounds when on the bridge.
8f6649cfb13be47f9fadfe50d31a0c0f2b8a28d1

==28531== 63,620 (72 direct, 63,548 indirect) bytes in 1 blocks are definitely lost in loss record 2,335 of 2,356
==28531==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28531==    by 0x50EFA8: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:123)
==28531==    by 0x50D820: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==28531==    by 0x50D8E0: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==28531==    by 0x4288C3: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==28531==    by 0x428766: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==28531==    by 0x49C52A: Titanic::CNavHelmet::PETHelmetOnOffMsg(Titanic::CPETHelmetOnOffMsg*) (nav_helmet.cpp:104)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==28531==    by 0x4C8EC4: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==28531==    by 0x4F8AF1: Titanic::CNavigationControllerGlyph::MouseButtonUpMsg(Common::Point const&) (pet_remote_glyphs.cpp:557)
==28531==    by 0x4FF182: Titanic::CPetGlyphs::MouseButtonUpMsg(Common::Point const&) (pet_glyphs.cpp:367)
==28531==    by 0x4F4374: Titanic::CPetRemote::MouseButtonUpMsg(Titanic::CMouseButtonUpMsg*) (pet_remote.cpp:159)
==28531== 63,620 (72 direct, 63,548 indirect) bytes in 1 blocks are definitely lost in loss record 2,336 of 2,356
==28531==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28531==    by 0x50EFA8: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:123)
==28531==    by 0x50D820: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==28531==    by 0x50D8E0: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==28531==    by 0x4288C3: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==28531==    by 0x428766: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==28531==    by 0x49C3B7: Titanic::CNavHelmet::PETHelmetOnOffMsg(Titanic::CPETHelmetOnOffMsg*) (nav_helmet.cpp:89)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==28531==    by 0x4C8EC4: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==28531==    by 0x4F2938: Titanic::CPetStarfield::MouseButtonDownMsg(Titanic::CMouseButtonDownMsg*) (pet_starfield.cpp:87)
==28531==    by 0x4E79F1: Titanic::CPetControl::MouseButtonDownMsg(Titanic::CMouseButtonDownMsg*) (pet_control.cpp:283)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==28531== 284,120 (72 direct, 284,048 indirect) bytes in 1 blocks are definitely lost in loss record 2,346 of 2,356
==28531==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28531==    by 0x50EFA8: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:123)
==28531==    by 0x50D820: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==28531==    by 0x50D8E0: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==28531==    by 0x4288C3: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==28531==    by 0x428766: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==28531==    by 0x49C4D8: Titanic::CNavHelmet::PETHelmetOnOffMsg(Titanic::CPETHelmetOnOffMsg*) (nav_helmet.cpp:103)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==28531==    by 0x4C8EC4: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==28531==    by 0x4F8AF1: Titanic::CNavigationControllerGlyph::MouseButtonUpMsg(Common::Point const&) (pet_remote_glyphs.cpp:557)
==28531==    by 0x4FF182: Titanic::CPetGlyphs::MouseButtonUpMsg(Common::Point const&) (pet_glyphs.cpp:367)
==28531==    by 0x4F4374: Titanic::CPetRemote::MouseButtonUpMsg(Titanic::CMouseButtonUpMsg*) (pet_remote.cpp:159)
==28531== 284,120 (72 direct, 284,048 indirect) bytes in 1 blocks are definitely lost in loss record 2,347 of 2,356
==28531==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28531==    by 0x50EFA8: Titanic::QSoundManager::loadSound(Titanic::CString const&) (sound_manager.cpp:123)
==28531==    by 0x50D820: Titanic::CSound::loadSound(Titanic::CString const&) (sound.cpp:138)
==28531==    by 0x50D8E0: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:158)
==28531==    by 0x4288C3: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==28531==    by 0x428766: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==28531==    by 0x49C409: Titanic::CNavHelmet::PETHelmetOnOffMsg(Titanic::CPETHelmetOnOffMsg*) (nav_helmet.cpp:90)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==28531==    by 0x4C8EC4: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==28531==    by 0x4F2938: Titanic::CPetStarfield::MouseButtonDownMsg(Titanic::CMouseButtonDownMsg*) (pet_starfield.cpp:87)
==28531==    by 0x4E79F1: Titanic::CPetControl::MouseButtonDownMsg(Titanic::CMouseButtonDownMsg*) (pet_control.cpp:283)
==28531==    by 0x4C911F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)

comment:3 by dreammaster, 7 years ago

Owner: set to dreammaster
Resolution: fixed
Status: newclosed

comment:4 by csnover, 7 years ago

Resolution: fixed
Status: closednew

Audio data is currently leaking:

   2 libc++abi.dylib operator new(unsigned long)
   3 scummvm Audio::RawStream<true, false, true>::RawStream(int, bool, DisposeAfterUse::Flag, Common::SeekableReadStream*) scummvm/audio/decoders/raw.cpp:55
   4 scummvm Audio::makeRawStream(Common::SeekableReadStream*, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:214
   5 scummvm Audio::makeRawStream(unsigned char const*, unsigned int, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:221
   6 scummvm Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) scummvm/audio/decoders/wave.cpp:227
   7 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:168
   8 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   9 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
  10 scummvm Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) scummvm/engines/titanic/sound/qmixer.cpp:170
  11 scummvm Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) scummvm/engines/titanic/sound/sound_manager.cpp:426
  12 scummvm Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) scummvm/engines/titanic/core/game_object.cpp:789
  13 scummvm Titanic::CPETSounds::PETPlaySoundMsg(Titanic::CPETPlaySoundMsg*) scummvm/engines/titanic/game/pet/pet_sounds.cpp:47
  14 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  15 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  16 scummvm Titanic::CPetControl::playSound(int) scummvm/engines/titanic/pet_control/pet_control.cpp:574
  17 scummvm Titanic::TTnpcScript::setDial(int, int) scummvm/engines/titanic/true_talk/tt_npc_script.cpp:641
  18 scummvm Titanic::TTnpcScript::updateCurrentDial(bool) scummvm/engines/titanic/true_talk/tt_npc_script.cpp:1020
  19 scummvm Titanic::DeskbotScript::process(Titanic::TTroomScript const*, Titanic::TTsentence const*) scummvm/engines/titanic/true_talk/deskbot_script.cpp:81
  20 scummvm Titanic::CScriptHandler::processInput(Titanic::TTroomScript*, Titanic::TTnpcScript*, Titanic::TTstring const&) scummvm/engines/titanic/true_talk/script_handler.cpp:98
  21 scummvm Titanic::CTrueTalkManager::processInput(Titanic::CTrueTalkNPC*, Titanic::CTextInputMsg*, Titanic::CViewItem*) scummvm/engines/titanic/true_talk/true_talk_manager.cpp:334
  22 scummvm Titanic::CTrueTalkNPC::processInput(Titanic::CTextInputMsg*, Titanic::CViewItem*) scummvm/engines/titanic/npcs/true_talk_npc.cpp:232
  23 scummvm Titanic::CTrueTalkNPC::TextInputMsg(Titanic::CTextInputMsg*) scummvm/engines/titanic/npcs/true_talk_npc.cpp:83
  24 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  25 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  26 scummvm Titanic::CPetConversations::textLineEntered(Titanic::CString const&) scummvm/engines/titanic/pet_control/pet_conversations.cpp:507
  27 scummvm Titanic::CPetConversations::handleKey(Common::KeyState const&) scummvm/engines/titanic/pet_control/pet_conversations.cpp:490
  28 scummvm Titanic::CPetConversations::KeyCharMsg(Titanic::CKeyCharMsg*) scummvm/engines/titanic/pet_control/pet_conversations.cpp:224
  29 scummvm Titanic::CPetControl::KeyCharMsg(Titanic::CKeyCharMsg*) scummvm/engines/titanic/pet_control/pet_control.cpp:339
  30 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  31 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  32 scummvm Titanic::CInputHandler::dispatchMessage(Titanic::CMessage*) scummvm/engines/titanic/input_handler.cpp:154
  33 scummvm Titanic::CInputHandler::processMessage(Titanic::CMessage*) scummvm/engines/titanic/input_handler.cpp:84
  34 scummvm Titanic::CInputHandler::handleMessage(Titanic::CMessage&, bool) scummvm/engines/titanic/input_handler.cpp:72
  35 scummvm Titanic::CInputTranslator::keyDown(Common::KeyState const&) scummvm/engines/titanic/input_translator.cpp:91
  36 scummvm Titanic::CMainGameWindow::keyDown(Common::KeyState) scummvm/engines/titanic/main_game_window.cpp:367
  37 scummvm Titanic::Events::pollEvents() scummvm/engines/titanic/events.cpp:95
  38 scummvm Titanic::Events::pollEventsAndWait() scummvm/engines/titanic/events.cpp:112
  39 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:157
   1 libsystem_malloc.dylib malloc
   2 scummvm Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) scummvm/audio/decoders/wave.cpp:220
   3 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:168
   4 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   5 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
   6 scummvm Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) scummvm/engines/titanic/sound/qmixer.cpp:170
   7 scummvm Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) scummvm/engines/titanic/sound/sound_manager.cpp:426
   8 scummvm Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) scummvm/engines/titanic/core/game_object.cpp:789
   9 scummvm Titanic::CDeskbot::MovieEndMsg(Titanic::CMovieEndMsg*) scummvm/engines/titanic/npcs/deskbot.cpp:123
  10 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  11 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  12 scummvm Titanic::CGameManager::updateMovies() scummvm/engines/titanic/game_manager.cpp:250
  13 scummvm Titanic::CGameManager::update() scummvm/engines/titanic/game_manager.cpp:170
  14 scummvm Titanic::CMainGameWindow::onIdle() scummvm/engines/titanic/main_game_window.cpp:264
  15 scummvm Titanic::Events::checkForNextFrameCounter() scummvm/engines/titanic/events.cpp:142
  16 scummvm Titanic::Events::pollEvents() scummvm/engines/titanic/events.cpp:44
  17 scummvm Titanic::Events::pollEventsAndWait() scummvm/engines/titanic/events.cpp:112
  18 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:157
   2 libc++abi.dylib operator new(unsigned long)
   3 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:169
   4 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   5 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
   6 scummvm Titanic::Events::pollEventsAndWait() scummvm/engines/titanic/events.cpp:118
   7 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:157
   1 libsystem_malloc.dylib malloc
   2 scummvm Titanic::CWaveFile::loadSound(Titanic::CString const&) scummvm/engines/titanic/sound/wave_file.cpp:103
   3 scummvm Titanic::QSoundManager::loadSound(Titanic::CString const&) scummvm/engines/titanic/sound/sound_manager.cpp:126
   4 scummvm Titanic::CSound::loadSound(Titanic::CString const&) scummvm/engines/titanic/sound/sound.cpp:138
   5 scummvm Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) scummvm/engines/titanic/sound/sound.cpp:158
   6 scummvm Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) scummvm/engines/titanic/core/game_object.cpp:513
   7 scummvm Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) scummvm/engines/titanic/sound/auto_music_player_base.cpp:73
   8 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
   9 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  10 scummvm Titanic::CGameManager::postLoad(Titanic::CProjectItem*) scummvm/engines/titanic/game_manager.cpp:104
  11 scummvm Titanic::CProjectItem::postLoad() scummvm/engines/titanic/core/project_item.cpp:340
  12 scummvm Titanic::CProjectItem::loadGame(int) scummvm/engines/titanic/core/project_item.cpp:222
  13 scummvm Titanic::CMainGameWindow::applicationStarting() scummvm/engines/titanic/main_game_window.cpp:91
  14 scummvm Titanic::TitanicEngine::initialize() scummvm/engines/titanic/titanic.cpp:127
  15 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:154

comment:5 by dreammaster, 7 years ago

Resolution: fixed
Status: newpending

Okay, I realised the original already had a clean method for freeing wave files when done with them or on exit. So this should be sorted out now, though could use confirmation.

comment:6 by csnover, 7 years ago

Resolution: fixed
Status: pendingnew

Sorry, things are still leaking.

   2 libc++abi.dylib operator new(unsigned long)
   3 scummvm Audio::RawStream<false, true, false>::RawStream(int, bool, DisposeAfterUse::Flag, Common::SeekableReadStream*) scummvm/audio/decoders/raw.cpp:55
   4 scummvm Audio::makeRawStream(Common::SeekableReadStream*, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:212
   5 scummvm Audio::makeRawStream(unsigned char const*, unsigned int, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:221
   6 scummvm Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) scummvm/audio/decoders/wave.cpp:227
   7 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:168
   8 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   9 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
  10 scummvm Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) scummvm/engines/titanic/sound/qmixer.cpp:170
  11 scummvm Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) scummvm/engines/titanic/sound/sound_manager.cpp:426
  12 scummvm Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) scummvm/engines/titanic/core/game_object.cpp:789
  13 scummvm Titanic::CDeskbot::MovieEndMsg(Titanic::CMovieEndMsg*) scummvm/engines/titanic/npcs/deskbot.cpp:123
  14 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  15 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  16 scummvm Titanic::CGameManager::updateMovies() scummvm/engines/titanic/game_manager.cpp:250
  17 scummvm Titanic::CGameManager::update() scummvm/engines/titanic/game_manager.cpp:170
  18 scummvm Titanic::CMainGameWindow::onIdle() scummvm/engines/titanic/main_game_window.cpp:264
  19 scummvm Titanic::Events::checkForNextFrameCounter() scummvm/engines/titanic/events.cpp:142
  20 scummvm Titanic::Events::pollEvents() scummvm/engines/titanic/events.cpp:44
  21 scummvm Titanic::Events::pollEventsAndWait() scummvm/engines/titanic/events.cpp:112
  22 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:157
   3 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:169
   4 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   5 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
   6 scummvm Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) scummvm/engines/titanic/sound/qmixer.cpp:170
   7 scummvm Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) scummvm/engines/titanic/sound/sound_manager.cpp:426
   8 scummvm Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) scummvm/engines/titanic/core/game_object.cpp:513
   9 scummvm Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) scummvm/engines/titanic/sound/auto_music_player_base.cpp:73
  10 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  11 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  12 scummvm Titanic::CGameManager::postLoad(Titanic::CProjectItem*) scummvm/engines/titanic/game_manager.cpp:104
  13 scummvm Titanic::CProjectItem::postLoad() scummvm/engines/titanic/core/project_item.cpp:340
  14 scummvm Titanic::CProjectItem::loadGame(int) scummvm/engines/titanic/core/project_item.cpp:222
  15 scummvm Titanic::CMainGameWindow::applicationStarting() scummvm/engines/titanic/main_game_window.cpp:91
  16 scummvm Titanic::TitanicEngine::initialize() scummvm/engines/titanic/titanic.cpp:127
  17 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:154
   2 libc++abi.dylib operator new(unsigned long)
   3 scummvm Audio::makeRawStream(Common::SeekableReadStream*, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:214
   4 scummvm Audio::makeRawStream(unsigned char const*, unsigned int, int, unsigned char, DisposeAfterUse::Flag) scummvm/audio/decoders/raw.cpp:221
   5 scummvm Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) scummvm/audio/decoders/wave.cpp:227
   6 scummvm Titanic::CWaveFile::createAudioStream() scummvm/engines/titanic/sound/wave_file.cpp:168
   7 scummvm Titanic::CWaveFile::play(int, unsigned char) scummvm/engines/titanic/sound/wave_file.cpp:201
   8 scummvm Titanic::QMixer::qsWaveMixPump() scummvm/engines/titanic/sound/qmixer.cpp:234
   9 scummvm Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) scummvm/engines/titanic/sound/qmixer.cpp:170
  10 scummvm Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) scummvm/engines/titanic/sound/sound_manager.cpp:426
  11 scummvm Titanic::CAutoSoundPlayer::TurnOn(Titanic::CTurnOn*) scummvm/engines/titanic/sound/auto_sound_player.cpp:81
  12 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  13 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  14 scummvm Titanic::CRoomAutoSoundPlayer::EnterRoomMsg(Titanic::CEnterRoomMsg*) scummvm/engines/titanic/sound/room_auto_sound_player.cpp:46
  15 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  16 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  17 scummvm Titanic::CViewItem::enterView(Titanic::CViewItem*) scummvm/engines/titanic/core/view_item.cpp:163
  18 scummvm Titanic::CViewItem::MouseButtonDownMsg(Titanic::CMouseButtonDownMsg*) scummvm/engines/titanic/core/view_item.cpp:199
  19 scummvm Titanic::CMessage::perform(Titanic::CTreeItem*) scummvm/engines/titanic/messages/messages.cpp:107
  20 scummvm Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) scummvm/engines/titanic/messages/messages.cpp:60
  21 scummvm Titanic::CInputHandler::dispatchMessage(Titanic::CMessage*) scummvm/engines/titanic/input_handler.cpp:156
  22 scummvm Titanic::CInputHandler::processMessage(Titanic::CMessage*) scummvm/engines/titanic/input_handler.cpp:84
  23 scummvm Titanic::CInputHandler::handleMessage(Titanic::CMessage&, bool) scummvm/engines/titanic/input_handler.cpp:72
  24 scummvm Titanic::CInputTranslator::leftButtonDown(int, Common::Point const&) scummvm/engines/titanic/input_translator.cpp:55
  25 scummvm Titanic::CMainGameWindow::leftButtonDown(Common::Point const&) scummvm/engines/titanic/main_game_window.cpp:294
  26 scummvm Titanic::Events::pollEvents() scummvm/engines/titanic/events.cpp:61
  27 scummvm Titanic::Events::pollEventsAndWait() scummvm/engines/titanic/events.cpp:112
  28 scummvm Titanic::TitanicEngine::run() scummvm/engines/titanic/titanic.cpp:157

comment:7 by csnover, 7 years ago

To be clear, these leaks are happening during the game, not just after the engine is deleted.

comment:8 by dreammaster, 7 years ago

Resolution: fixed
Status: newpending

Okay, I hope the most recent commits take care of the remaining leaks. I tried doing a global counter in the wavefile constructor & destructor, and the total was 0 on exit. So I'm cautiously optimistic.

comment:9 by dafioram, 7 years ago

Embarkation

==10378== 176 (32 direct, 144 indirect) bytes in 1 blocks are definitely lost in loss record 2,295 of 2,412
==10378==    at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10378==    by 0x30CFF3: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==10378==    by 0x360BBC: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==10378==    by 0x360875: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==10378==    by 0x309905: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==10378==    by 0x308A39: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==10378==    by 0x307167: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:179)
==10378==    by 0x217286: Titanic::CGameObject::playGlobalSound(Titanic::CString const&, Titanic::VolumeMode, bool, bool, int, Audio::Mixer::SoundType) (game_object.cpp:513)
==10378==    by 0x2FDC55: Titanic::CAutoMusicPlayerBase::LoadSuccessMsg(Titanic::CLoadSuccessMsg*) (auto_music_player_base.cpp:74)
==10378==    by 0x2BF73F: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==10378==    by 0x2BF4E4: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==10378==    by 0x34709C: Titanic::CGameManager::postLoad(Titanic::CProjectItem*) (game_manager.cpp:104)

comment:10 by dafioram, 7 years ago

Resolution: fixed
Status: pendingnew

Arboretum:

==2467== 4,232 (32 direct, 4,200 indirect) bytes in 1 blocks are definitely lost in loss record 2,315 of 2,329
==2467==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2467==    by 0x513647: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==2467==    by 0x565766: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==2467==    by 0x565421: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==2467==    by 0x51017E: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==2467==    by 0x50F2B5: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==2467==    by 0x50D9D7: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:179)
==2467==    by 0x428883: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==2467==    by 0x428726: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==2467==    by 0x4AB0DA: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:99)
==2467==    by 0x4C9017: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==2467==    by 0x4C8DBC: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==2467== 
==2467== 1,297,856 (32 direct, 1,297,824 indirect) bytes in 1 blocks are definitely lost in loss record 2,328 of 2,329
==2467==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2467==    by 0x513647: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:207)
==2467==    by 0x565766: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==2467==    by 0x565421: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==2467==    by 0x51017E: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==2467==    by 0x50F2B5: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==2467==    by 0x50D9D7: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:179)
==2467==    by 0x428883: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==2467==    by 0x428726: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==2467==    by 0x4AB06A: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:94)
==2467==    by 0x4C9017: Titanic::CMessage::perform(Titanic::CTreeItem*) (messages.cpp:107)
==2467==    by 0x4C8DBC: Titanic::CMessage::execute(Titanic::CTreeItem*, Titanic::ClassDef const*, int) (messages.cpp:60)
==2467== 
==2467== 1,376,796 bytes in 1 blocks are possibly lost in loss record 2,329 of 2,329
==2467==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2467==    by 0x731834: Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) (wave.cpp:220)
==2467==    by 0x5134AB: Titanic::CWaveFile::createAudioStream() (wave_file.cpp:170)
==2467==    by 0x5135FD: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:201)
==2467==    by 0x565766: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==2467==    by 0x565421: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==2467==    by 0x51017E: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==2467==    by 0x50F2B5: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==2467==    by 0x50D9D7: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:179)
==2467==    by 0x428883: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
==2467==    by 0x428726: Titanic::CGameObject::playSound(Titanic::CString const&, unsigned int, int, bool) (game_object.cpp:789)
==2467==    by 0x4AB0DA: Titanic::CGondolierMixer::TurnOn(Titanic::CTurnOn*) (gondolier_mixer.cpp:99)

comment:11 by dafioram, 7 years ago

Bridge helmet on then off also look at starview and skyview:

==2533== 711,816 (256 direct, 711,560 indirect) bytes in 4 blocks are definitely lost in loss record 2,337 of 2,337
==2533==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2533==    by 0x72D5DC: Audio::makeRawStream(Common::SeekableReadStream*, int, unsigned char, DisposeAfterUse::Flag) (raw.cpp:214)
==2533==    by 0x72D6E0: Audio::makeRawStream(unsigned char const*, unsigned int, int, unsigned char, DisposeAfterUse::Flag) (raw.cpp:221)
==2533==    by 0x7318E8: Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) (wave.cpp:227)
==2533==    by 0x5134AB: Titanic::CWaveFile::createAudioStream() (wave_file.cpp:170)
==2533==    by 0x5135FD: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:201)
==2533==    by 0x565766: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==2533==    by 0x565421: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==2533==    by 0x51017E: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==2533==    by 0x50F2B5: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==2533==    by 0x50D9D7: Titanic::CSound::playSound(Titanic::CString const&, Titanic::CProximity&) (sound.cpp:179)
==2533==    by 0x428883: Titanic::CGameObject::playSound(Titanic::CString const&, Titanic::CProximity&) (game_object.cpp:804)
Last edited 7 years ago by dafioram (previous) (diff)

comment:12 by dafioram, 7 years ago

Grab parrot:

==2612== 71,055 (63,776 direct, 7,279 indirect) bytes in 1 blocks are definitely lost in loss record 2,327 of 2,328
==2612==    at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==2612==    by 0x72875E: Audio::makeMP3Stream(Common::SeekableReadStream*, DisposeAfterUse::Flag) (mp3.cpp:534)
==2612==    by 0x7317B9: Audio::makeWAVStream(Common::SeekableReadStream*, DisposeAfterUse::Flag) (wave.cpp:208)
==2612==    by 0x5134AB: Titanic::CWaveFile::createAudioStream() (wave_file.cpp:170)
==2612==    by 0x5135FD: Titanic::CWaveFile::play(int, unsigned char) (wave_file.cpp:201)
==2612==    by 0x565766: Titanic::QMixer::qsWaveMixPump() (qmixer.cpp:235)
==2612==    by 0x565421: Titanic::QMixer::qsWaveMixPlayEx(int, unsigned int, Titanic::CWaveFile*, int, Titanic::QMIXPLAYPARAMS const&) (qmixer.cpp:170)
==2612==    by 0x51017E: Titanic::QSoundManager::playWave(Titanic::CWaveFile*, int, unsigned int, Titanic::CProximity&) (sound_manager.cpp:426)
==2612==    by 0x50F2B5: Titanic::QSoundManager::playSound(Titanic::CWaveFile&, Titanic::CProximity&) (sound_manager.cpp:187)
==2612==    by 0x50DC85: Titanic::CSound::playSpeech(Titanic::CDialogueFile*, int, Titanic::CProximity&) (sound.cpp:228)
==2612==    by 0x53CE28: Titanic::CTrueTalkManager::playSpeech(Titanic::TTtalker*, Titanic::TTroomScript*, Titanic::CViewItem*, bool) (true_talk_manager.cpp:538)
==2612==    by 0x53C5CA: Titanic::CTrueTalkManager::setDialogue(Titanic::CTrueTalkNPC*, Titanic::TTroomScript*, Titanic::CViewItem*) (true_talk_manager.cpp:357)

comment:13 by dreammaster, 7 years ago

Resolution: fixed
Status: newclosed

Okay, once again, I think my commit will fix these leaks :)

Note: See TracTickets for help on using tickets.