#4829 closed defect (fixed)
LURE: Engine Abort "Invalid Room 19..."
Reported by: | digitall | Owned by: | dreammaster |
---|---|---|---|
Priority: | normal | Component: | Engine: Lure |
Version: | Keywords: | ||
Cc: | Game: | Lure of the Temptress |
Description
After freeing the Girl (Goewin?) using the potion to impersonate Serena, while walking around waiting for the potion to wear off, the engine aborts just after re-entering the room with the Town Hall Door.
The error given is "Invalid room 19 specified for barman details retrieval!"
There are also a couple of "WARNING: actionCtr exceeded!" produced as well, but these are probably from earlier in the play.
ScummVM 1.1.0pre48374 (Mar 23 2010 23:16:52) Features compiled in: Vorbis FLAC MP3 ALSA RGB zLib FluidSynth built on Linux x86_32 2.6.31 by GCC 4.3.4
Ticket imported from: #2976222. Ticket imported from: bugs/4829.
Attachments (1)
Change History (9)
by , 15 years ago
comment:1 by , 15 years ago
Another Engine Abort which may be linked occurs later when trying to solve the Weregate Cave Puzzle in the Green Cave. This time, the error is "Access made to non-defined action support record!". Again, a number of "WARNING: actionCtr exceeded!" are produced...
comment:2 by , 15 years ago
Owner: | set to |
---|
comment:3 by , 15 years ago
Hmmm... I'm having trouble replicating the problem. I'll try some more experimentaiton to see if I can. Internally, the relevant code says there are three different NPCs that act as barmen/shopkeepers, and each of them are in a set room - there is an internal list of movement control information which is keyed by the room number to determine which one uses which data. I can't think of any reason why the error would occur unless some other problem caused some serious memory corruption.
As for the other one, it would be better if you could create a separate bug report for it and, ideally, see if you can attach a savegame from close to the problem, as well as list any pertinant details of what exactly you were doing/did to get the error.
comment:4 by , 15 years ago
OK. I also was unable to reliably replicate this, otherwise I'd have provided a procedure.
I will have a go at playing through the game under valgrind, to see if I can catch any memory issues.
Moved the Weregate engine abort to bug 2976974.
comment:5 by , 15 years ago
Valgrind has revealed a bunch of memory errors which are evident in the first few rooms.
It is likely that these are at least partial responsible for the issues observed, but I can't complete playing through until at least these are fixed as they are likely to fill the log masking any less frequent issues.
Log follows : Start of Game : ==17746== ==17746== Conditional jump or move depends on uninitialised value(s) ==17746== at 0x84FDE6B: Lure::Hotspot::setDirection(Lure::Direction) (hotspots.cpp:520) ==17746== by 0x84D351E: Lure::Resources::addHotspot(unsigned short) (res.cpp:657) ==17746== by 0x84D3785: Lure::Resources::activateHotspot(unsigned short) (res.cpp:616) ==17746== by 0x84E8C86: Lure::Script::activateHotspot(unsigned short, unsigned short, unsigned short) (scripts.cpp:67) ==17746== by 0x84EA2AA: Lure::Script::execute(unsigned short) (scripts.cpp:1110) ==17746== by 0x84FC37D: Lure::Game::execute() (game.cpp:166) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389) ==17746== by 0x8053451: main (main.cpp:65) ==17746== ==17746== Conditional jump or move depends on uninitialised value(s) ==17746== at 0x84FDDCF: Lure::Hotspot::resetDirection() (hotspots.cpp:1201) ==17746== by 0x8501E37: Lure::Hotspot::updateMovement() (hotspots.cpp:720) ==17746== by 0x8501E5C: Lure::Hotspot::updateMovement2(Lure::CharacterMode) (hotspots.cpp:725) ==17746== by 0x85088CE: Lure::HotspotTickHandlers::playerAnimHandler(Lure::Hotspot&) (hotspots.cpp:2974) ==17746== by 0x84FDD95: Lure::Hotspot::tick() (hotspots.cpp:474) ==17746== by 0x84FC168: Lure::Game::tick() (game.cpp:92) ==17746== by 0x84E5A65: Lure::Room::setRoomNumber(unsigned short, bool) (room.cpp:632) ==17746== by 0x84F9EFC: Lure::Game::handleBootParam(int) (game.cpp:945) ==17746== by 0x84FC441: Lure::Game::execute() (game.cpp:169) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== ==17746== Conditional jump or move depends on uninitialised value(s) ==17746== at 0x84FDDD5: Lure::Hotspot::resetDirection() (hotspots.cpp:1201) ==17746== by 0x8501E37: Lure::Hotspot::updateMovement() (hotspots.cpp:720) ==17746== by 0x8501E5C: Lure::Hotspot::updateMovement2(Lure::CharacterMode) (hotspots.cpp:725) ==17746== by 0x85088CE: Lure::HotspotTickHandlers::playerAnimHandler(Lure::Hotspot&) (hotspots.cpp:2974) ==17746== by 0x84FDD95: Lure::Hotspot::tick() (hotspots.cpp:474) ==17746== by 0x84FC168: Lure::Game::tick() (game.cpp:92) ==17746== by 0x84E5A65: Lure::Room::setRoomNumber(unsigned short, bool) (room.cpp:632) ==17746== by 0x84F9EFC: Lure::Game::handleBootParam(int) (game.cpp:945) ==17746== by 0x84FC441: Lure::Game::execute() (game.cpp:169) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== ==17746== Conditional jump or move depends on uninitialised value(s) ==17746== at 0x84FDDDB: Lure::Hotspot::resetDirection() (hotspots.cpp:1201) ==17746== by 0x8501E37: Lure::Hotspot::updateMovement() (hotspots.cpp:720) ==17746== by 0x8501E5C: Lure::Hotspot::updateMovement2(Lure::CharacterMode) (hotspots.cpp:725) ==17746== by 0x85088CE: Lure::HotspotTickHandlers::playerAnimHandler(Lure::Hotspot&) (hotspots.cpp:2974) ==17746== by 0x84FDD95: Lure::Hotspot::tick() (hotspots.cpp:474) ==17746== by 0x84FC168: Lure::Game::tick() (game.cpp:92) ==17746== by 0x84E5A65: Lure::Room::setRoomNumber(unsigned short, bool) (room.cpp:632) ==17746== by 0x84F9EFC: Lure::Game::handleBootParam(int) (game.cpp:945) ==17746== by 0x84FC441: Lure::Game::execute() (game.cpp:169) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== ==17746== Conditional jump or move depends on uninitialised value(s) ==17746== at 0x84FDE6B: Lure::Hotspot::setDirection(Lure::Direction) (hotspots.cpp:520) ==17746== by 0x8501851: Lure::Hotspot::walkingStep() (hotspots.cpp:672) ==17746== by 0x850A3BC: Lure::HotspotTickHandlers::standardCharacterAnimHandler(Lure::Hotspot&) (hotspots.cpp:2776) ==17746== by 0x850A545: Lure::HotspotTickHandlers::jailorAnimHandler(Lure::Hotspot&) (hotspots.cpp:3205) ==17746== by 0x84FDD95: Lure::Hotspot::tick() (hotspots.cpp:474) ==17746== by 0x84FC168: Lure::Game::tick() (game.cpp:92) ==17746== by 0x84FC20F: Lure::Game::nextFrame() (game.cpp:125) ==17746== by 0x84FC4BA: Lure::Game::execute() (game.cpp:182) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389)
Using Knife on Sack : ==17746== Mismatched free() / delete / delete [] ==17746== at 0x4024D9A: operator delete(void*) (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==17746== by 0x84D161D: Lure::PopupMenu::ShowInventory() (menu.cpp:296) ==17746== by 0x84FB3BD: Lure::Game::handleRightClickMenu() (game.cpp:566) ==17746== by 0x84FBED8: Lure::Game::handleClick() (game.cpp:472) ==17746== by 0x84FC880: Lure::Game::execute() (game.cpp:263) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389) ==17746== by 0x8053451: main (main.cpp:65) ==17746== Address 0x5e83ee8 is 0 bytes inside a block of size 8 alloc'd ==17746== at 0x40263DE: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==17746== by 0x850D998: Lure::Memory::alloc(unsigned int) (memory.cpp:42) ==17746== by 0x84D14B4: Lure::PopupMenu::ShowInventory() (menu.cpp:277) ==17746== by 0x84FB3BD: Lure::Game::handleRightClickMenu() (game.cpp:566) ==17746== by 0x84FBED8: Lure::Game::handleClick() (game.cpp:472) ==17746== by 0x84FC880: Lure::Game::execute() (game.cpp:263) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389) ==17746== by 0x8053451: main (main.cpp:65) ==17746== ==17746== Mismatched free() / delete / delete [] ==17746== at 0x4024D9A: operator delete(void*) (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==17746== by 0x84D1628: Lure::PopupMenu::ShowInventory() (menu.cpp:297) ==17746== by 0x84FB3BD: Lure::Game::handleRightClickMenu() (game.cpp:566) ==17746== by 0x84FBED8: Lure::Game::handleClick() (game.cpp:472) ==17746== by 0x84FC880: Lure::Game::execute() (game.cpp:263) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389) ==17746== by 0x8053451: main (main.cpp:65) ==17746== Address 0x5e83f20 is 0 bytes inside a block of size 4 alloc'd ==17746== at 0x40263DE: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==17746== by 0x850D998: Lure::Memory::alloc(unsigned int) (memory.cpp:42) ==17746== by 0x84D14C5: Lure::PopupMenu::ShowInventory() (menu.cpp:278) ==17746== by 0x84FB3BD: Lure::Game::handleRightClickMenu() (game.cpp:566) ==17746== by 0x84FBED8: Lure::Game::handleClick() (game.cpp:472) ==17746== by 0x84FC880: Lure::Game::execute() (game.cpp:263) ==17746== by 0x84CF1C3: Lure::LureEngine::go() (lure.cpp:160) ==17746== by 0x84D0358: Lure::LureEngine::run() (lure.h:102) ==17746== by 0x80565C0: runGame(PluginSubclass<MetaEngine> const*, OSystem&, Common::String const&) (main.cpp:216) ==17746== by 0x8056F69: scummvm_main (main.cpp:389) ==17746== by 0x8053451: main (main.cpp:65)
comment:6 by , 15 years ago
The valgrind issues here have been corrrected by SVN r48407 and r48413. I have tested past the point of the error and have found no problems or memory issues.
I would suggest that this bug was _likely_ caused by these memory issues and that the bug should be closed as resolved.
comment:7 by , 15 years ago
Excellent work, Paul and David!
If the error pops up again, feel free to repoen this.
comment:8 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Last Savegame prior to crash