[Scummvm-tracker] [ScummVM :: Bugs] #11334: Myst ME crashes when dropping key in stoneship age

ScummVM :: Bugs trac at scummvm.org
Wed Jan 29 10:17:36 UTC 2020


#11334: Myst ME crashes when dropping key in stoneship age
---------------------+----------------------------
  Reporter:  clbr    |      Owner:  (none)
      Type:  defect  |     Status:  new
  Priority:  normal  |  Component:  Engine: Mohawk
Resolution:          |   Keywords:  crash
      Game:  Myst    |
---------------------+----------------------------
Comment (by clbr):

 Here's gdb bt from today's master (8a8336328e8)

 {{{
 scummvm: ./common/array.h:192: T& Common::Array<T>::operator[](uint) [with
 T = Common::QuickTimeParser::EditListEntry]: Assertion `idx < _size'
 failed.

 Program received signal SIGABRT, Aborted.
 0x00007ffff45eb095 in raise () from /lib/libc.so.6
 (gdb) bt full
 #0  0x00007ffff45eb095 in raise () from /lib/libc.so.6
 No symbol table info available.
 #1  0x00007ffff45ec540 in abort () from /lib/libc.so.6
 No symbol table info available.
 #2  0x00007ffff45e468f in __assert_fail () from /lib/libc.so.6
 No symbol table info available.
 #3  0x000000000055531b in operator[] (idx=<optimized out>, this=<optimized
 out>)
     at ./common/array.h:192
 No locals.
 #4  Video::QuickTimeDecoder::VideoTrackHandler::seek (this=0xb36e90,
 requestedTime=...)
     at video/qt_decoder.cpp:372
         convertedFrames = 450
         time = {_secs = -13184, _numFrames = 32767, _framerate = 11761968,
 _framerateFactor = 0}
         __PRETTY_FUNCTION__ = "virtual bool
 Video::QuickTimeDecoder::VideoTrackHandler::seek(const Audio::Timestamp&)"
 #5  0x0000000000557cf0 in Video::VideoDecoder::seekIntern (this=0xb369f0,
 time=...)
     at video/video_decoder.cpp:503
         it = 0xf3a9b0
 #6  0x0000000000557870 in Video::VideoDecoder::seek (this=0xb369f0,
 time=...)
     at video/video_decoder.cpp:362
 No locals.
 #7  0x000000000045e296 in Mohawk::MystAreaVideo::playMovie (this=0xb37930)
     at engines/mohawk/myst_areas.cpp:251
         rate = {_num = -1, _denom = 1}
         handle = {<Common::SafeBool<Common::SharedPtr<Mohawk::VideoEntry>,
 Common::impl::no_base<Common::SharedPtr<Mohawk::VideoEntry> > >> =
 {<Common::impl::no_base<Common::SharedPtr<Mohawk::VideoEntry> >> = {<No
 data fields>}, <No data fields>}, _refCount = 0xf28800, _deletion =
 0xf3b780,
           _pointer = 0xfff310}
 #8  0x000000000046f3a4 in Mohawk::MystScriptParser::o_triggerMovie
 (this=<optimized out>,
     var=<optimized out>, args=...) at engines/mohawk/myst_scripts.cpp:455
         direction = -1
         resource = 0x59b9
 #9  0x000000000046da78 in Mohawk::MystScriptParser::runOpcode
 (this=0xb37db0, op=<optimized out>,
     var=22969, args=...) at engines/mohawk/myst_scripts.cpp:195
         i = <optimized out>
 #10 0x000000000046db2f in Mohawk::MystScriptParser::runScript
 (this=0xb37db0, script=...,
     invokingResource=0xb37930) at engines/mohawk/myst_scripts.cpp:179
         entry = @0xb37b98: {type = Mohawk::kMystScriptNormal, resourceId =
 0, opcode = 9, var = 0,
           args = {_capacity = 1, _size = 1, _storage = 0xfa6a50}, u1 = 0}
         i = 2
 #11 0x000000000045f5aa in Mohawk::MystAreaAction::handleMouseUp (this=0x6)
     at engines/mohawk/myst_areas.cpp:153
 No locals.
 #12 0x000000000046423f in Mohawk::MystCard::updateResourcesForInput
 (this=0xb5e9a0, mouse=...,
     mouseClicked=false, mouseMoved=false) at
 engines/mohawk/myst_card.cpp:384
 No locals.
 #13 0x000000000045c00e in Mohawk::MohawkEngine_Myst::doFrame
 (this=0xffc690)
     at engines/mohawk/myst.cpp:660
         mousePos = {x = 308, y = 281}
 ---Type <return> to continue, or q <return> to quit---
         event = {type = Common::EVENT_CUSTOM_ENGINE_ACTION_END, kbdRepeat
 = false, kbd = {
             keycode = Common::KEYCODE_INVALID, ascii = 0, flags = 0
 '\000'}, mouse = {x = 308,
             y = 281}, customType = 2, path = {static npos = 4294967295,
             static _builtinCapacity = 20, _size = 0, _str = 0x7fffffffce38
 "", {
               _storage =
 "\000Ûÿ\000\000\000\000\000\004\000\000\000\b\020\b\000 µE", _extern = {
                 _refCount = 0xffdb00, _capacity = 4}}}, joystick = {axis =
 0 '\000', position = 0,
             button = 0 '\000'}}
 #14 0x000000000045c938 in Mohawk::MohawkEngine_Myst::run (this=0x59b9)
     at engines/mohawk/myst.cpp:450
 No locals.
 #15 0x000000000040e624 in runGame () at base/main.cpp:295
 No locals.
 #16 0x000000000040fc82 in scummvm_main (argc=<optimized out>,
 argv=<optimized out>)
     at base/main.cpp:554
         result = {_code = Common::kNoError, _desc = {static npos =
 4294967295,
             static _builtinCapacity = 20, _size = 0, _str = 0x0, {
               _storage = '\000' <repeats 19 times>, _extern = {_refCount =
 0x0, _capacity = 0}}}}
         chainedGame = {static npos = 4294967295, static _builtinCapacity =
 20, _size = 4094842584,
           _str = 0x0, {_storage = '\000' <repeats 19 times>, _extern =
 {_refCount = 0x0,
               _capacity = 0}}}
         saveSlot = 0
         plugin = 0xa66390
         specialDebug = {static npos = 4294967295, static _builtinCapacity
 = 20, _size = 0,
           _str = 0x7fffffffe3f0 "", {_storage = '\000' <repeats 16 times>,
 "påÿÿ", _extern = {
               _refCount = 0x0, _capacity = 0}}}
         command = {static npos = 4294967295, static _builtinCapacity = 20,
 _size = 0,
           _str = 0x7fffffffe3c0 "", {_storage =
 "\000àþ÷ÿ\177\000\000µLbôÿ\177\000\000;\000\000",
             _extern = {_refCount = 0x7ffff7fee000, _capacity =
 4100082869}}}
         settings = {
           _nodePool = {<Common::FixedSizeMemoryPool<80ul, 10ul>> =
 {<Common::MemoryPool> = {
                 _chunkSize = 80, _pages = {_capacity = 0, _size = 0,
 _storage = 0x0},
                 _next = 0x7fffffffd868, _chunksPerPage = 8},
               _storage = "¸Øÿÿÿ\177", '\000' <repeats 74 times>,
 "\bÙÿÿÿ\177", '\000' <repeats 74 times>, "XÙÿÿÿ\177", '\000' <repeats 74
 times>...}, <No data fields>}, _defaultVal = {
             static npos = 4294967295, static _builtinCapacity = 20, _size
 = 0,
             _str = 0x7fffffffdb98 "", {_storage = '\000' <repeats 19
 times>, _extern = {
                 _refCount = 0x0, _capacity = 0}}}, _storage = 0xa07690,
 _mask = 15, _size = 0,
           _deleted = 0, _hash = {<No data fields>}, _equal = {<No data
 fields>}}
         res = {_code = Common::kNoError, _desc = {static npos =
 4294967295,
             static _builtinCapacity = 20, _size = 8, _str = 0x7fffffffdc18
 "No error", {
               _storage = "No error\000rror\000\000\000\000\000\000",
 _extern = {
                 _refCount = 0x726f727265206f4e, _capacity = 1869771264}}}}
         __PRETTY_FUNCTION__ = "int scummvm_main(int, const char* const*)"
 #17 0x000000000040c875 in main (argc=1, argv=0x7fffffffe578)
     at backends/platform/sdl/posix/posix-main.cpp:45
         res = <optimized out>
         __PRETTY_FUNCTION__ = "int main(int, char**)"
 (gdb) qui
 }}}

 I also ran it under valgrind. Valgrind said nothing related before the
 assert crash (some Conditional jump or move depends on uninitialised value
 in the initial game picker GUI).
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/11334#comment:7>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list