[Scummvm-tracker] [ScummVM :: Bugs] #11244: CLOUD: Crash when loading a save from the launcher

ScummVM :: Bugs trac at scummvm.org
Wed Nov 6 17:11:36 CET 2019


#11244: CLOUD: Crash when loading a save from the launcher
-------------------+--------------------
Reporter:  bgK     |      Owner:  (none)
    Type:  defect  |     Status:  new
Priority:  normal  |  Component:  Cloud
Keywords:          |       Game:
-------------------+--------------------
 ScummVM 4810a5d8d35c5caa79f9a3a1e93d882de32b2d87.

 When loading a save from the launcher, if cloud saves sync is still in
 progress, the following crash occurs:

 {{{
 Thread 6 received signal SIGSEGV, Segmentation fault

 #0  0x004c7e80 in Common::SharedPtr<Graphics::Surface>::decRef
 (this=0x801ed0c) at ../common/ptr.h:203
 #1  Common::SharedPtr<Graphics::Surface>::~SharedPtr (this=0x801ed0c,
 __in_chrg=<optimized out>) at ../common/ptr.h:124
 #2  SaveStateDescriptor::~SaveStateDescriptor (this=0x801ec80,
 __in_chrg=<optimized out>) at ../engines/savestate.h:45
 #3  Common::Array<SaveStateDescriptor>::freeStorage (this=<optimized out>,
 elements=<optimized out>, storage=0x801ec80) at ../common/array.h:319
 #4  Common::Array<SaveStateDescriptor>::operator= (array=None of size 1,
 capacity 134678855 = {...}, this=0x866e764) at ../common/array.h:205
 #5  Common::Array<SaveStateDescriptor>::operator= (array=None of size 1,
 capacity 134678855 = {...}, this=0x866e764) at ../common/array.h:201
 #6  GUI::SaveLoadChooserDialog::listSaves (this=0x866e6e0) at ../gui
 /saveload-dialog.cpp:301
 #7  0x004c725c in GUI::SaveLoadChooserDialog::updateSaveList
 (this=this at entry=0x866e6e0) at ../gui/saveload-dialog.cpp:296
 #8  0x004c87b0 in GUI::SaveLoadChooserSimple::updateSaveList
 (this=0x866e6e0) at ../gui/saveload-dialog.cpp:661
 #9  0x004cb688 in GUI::SaveLoadChooserSimple::handleCommand
 (this=0x866e6e0, sender=sender at entry=0x866f7cc, cmd=cmd at entry=1397966158,
 data=<optimized out>) at ../gui/saveload-dialog.cpp:470
 #10 0x0050e0dc in GUI::CommandSender::sendCommand (data=0, cmd=1397966158,
 this=0x866f7cc) at ../gui/object.h:55
 #11 Cloud::SavesSyncRequest::downloadNextFile (this=this at entry=0x866f7b8)
 at ../backends/cloud/savessyncrequest.cpp:269
 #12 0x0050ffb4 in Cloud::SavesSyncRequest::directoryListedCallback
 (this=<optimized out>, response=...) at
 ../backends/cloud/savessyncrequest.cpp:162
 #13 0x005180e0 in
 Cloud::Dropbox::DropboxListDirectoryRequest::responseCallback
 (this=<optimized out>, response=...) at
 ../backends/cloud/dropbox/dropboxlistdirectoryrequest.cpp:195
 #14 0x00529580 in Networking::CurlJsonRequest::handle (this=0x866e068) at
 ../backends/networking/curl/curljsonrequest.cpp:77
 #15 0x00526ccc in Networking::ConnectionManager::interateRequests
 (this=this at entry=0x816edb8) at
 ../backends/networking/curl/connectionmanager.cpp:184
 #16 0x00526ed4 in Networking::ConnectionManager::handle (this=0x816edb8)
 at ../backends/networking/curl/connectionmanager.cpp:159
 #17 0x00506ea4 in DefaultTimerManager::handler (this=this at entry=0x802d568)
 at ../backends/timer/default/default-timer.cpp:106
 #18 0x0010a3e0 in _3DS::timerThreadFunc (arg=0x801e008) at
 ../backends/platform/3ds/osystem-events.cpp:288
 #19 0x00621a90 in _thread_begin (arg=<optimized out>) at /home/fincs
 /pacman-packages/libctru/src/ctrulib-1.6.0/libctru/source/thread.c:37
 }}}

 Meanwhile, the main thread is starting the engine normally:
 {{{
 #0  svcSendSyncRequest () at /home/fincs/pacman-
 packages/libctru/src/ctrulib-1.6.0/libctru/source/svc.s:336
 #1  0x006271c0 in FSUSER_OpenFile (out=0x8006328, out at entry=0x8006320,
 archive=<optimized out>, path=..., openFlags=openFlags at entry=1,
 attributes=attributes at entry=0) at /home/fincs/pacman-
 packages/libctru/src/ctrulib-1.6.0/libctru/source/services/fs.c:31
 #2  0x0062b928 in sdmc_open (r=0x98d018 <impure_data>,
 fileStruct=0x869addc, path=<optimized out>, flags=65536, mode=438) at
 /home/fincs/pacman-
 packages/libctru/src/ctrulib-1.6.0/libctru/source/sdmc_dev.c:385
 #3  0x007a3628 in _open_r ()
 #4  0x007873c0 in _fopen_r ()
 #5  0x0053218c in StdioStream::makeFromPath (path=...,
 writeMode=<optimized out>) at ../common/str.h:208
 #6  0x00531408 in POSIXFilesystemNode::createReadStream (this=<optimized
 out>) at ../backends/fs/posix/posix-fs.h:60
 #7  0x00600800 in Common::FSNode::createReadStream (this=0x8006d00) at
 ../common/ptr.h:152
 #8  0x00600000 in Common::File::open (node=..., this=0x8006468) at
 ../common/file.cpp:73
 --Type <RET> for more, q to quit, c to continue without paging--
 #9  Common::File::open (this=this at entry=0x8006468, node=...) at
 ../common/file.cpp:62
 #10 0x0053a2f4 in AdvancedMetaEngine::getFileProperties
 (this=this at entry=0x802a608, parent=..., allFiles=..., game=...,
 fname="a_data_french.mhk", fileProps=...) at ../common/hashmap.h:586
 #11 0x0053a47c in AdvancedMetaEngine::detectGame
 (this=this at entry=0x802a608, parent=..., allFiles=...,
 language=language at entry=Common::EN_ANY,
 platform=platform at entry=Common::kPlatformWindows, extra="") at
 ../engines/advancedDetector.cpp:408
 #12 0x005395b8 in AdvancedMetaEngine::createInstance
 (this=this at entry=0x802a608, syst=syst at entry=0x801e008, engine=0x8007b60,
 engine at entry=0x8007b58) at ../engines/advancedDetector.cpp:258
 #13 0x0010d474 in runGame (Python Exception <class 'UnicodeDecodeError'>
 'utf-8' codec can't decode byte 0xf8 in position 0: invalid start byte:
 edebuglevels=, system=..., plugin=0x802ed80) at ../base/main.cpp:193
 #14 scummvm_main (argc=argc at entry=1, argv=argv at entry=0x8000000) at
 ../base/main.cpp:577
 #15 0x00105d00 in main (argc=1, argv=0x8000000) at
 ../backends/platform/3ds/main.cpp:52
 }}}

 The save / load dialog is long gone when the network thread tries to
 access it.

 Perhaps the save / load dialog should simply poll updates from the "cloud
 manager" rather than being updated by another thread.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/11244>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list