Citra wouldn't load save state, now crashes launching ROM

Earlier today, I was trying to load a save state for Majora’s Mask, but it kept crashing when I tried. Opening the game normally and starting a saved file worked, but my save state was a bit further along than my in-game save.

I’ve since updated to the latest Nightly build and now whenever I try to open the ROM, Citra crashes completely.

System Information

  • Operating System: Mac OS X Catalina
  • CPU: 6-Core Intel Core i7 2.2 GHz
  • GPU: Radeon Pro 555X
  • Citra Version (found in title bar): Nightly 1547
  • Game: Legend of Zelda: Majora’s Mask 3D

Diagnostic Log
citra_log.txt (4.3 KB)

I did not find anything wrong in your log file. Please wait for a moderator to assist.

Yeah you need to save normally more often so you won’t get setback that much. Save states are not a replacement for normal saves. You can try use an older version: and load the state there and when you can, immediately save normally so you can on latest Citra load normally so you can make new save states.

Thank you, I know I should save more. Fortunately I didn’t lose much play time. Maybe a half an hour. Just pointing out that the save states corrupted first then the game later. I’ve since tried downloading the 1541 and 1544 Nightly builds (choosing at random) and both of those crash when trying to launch the ROM as well when earlier this morning everything was working fine.

The rom is? Hm iirc this game needs region to be manually set in Citra. Double check that it is, it should be in the General tab.

Region is set to USA. No change to that setting in a while.

Looking at the crash log from OS X showed a crash in thread 21.

Thread 21 Crashed:: EmuThread
0   ???                           	000000000000000000 0 + 0
1   com.citra-emu.citra           	0x0000000106904324 OpenGL::ShaderDiskCache::SaveDump(unsigned long long, unsigned int) + 308
2   com.citra-emu.citra           	0x0000000106914d81 OpenGL::ShaderProgramManager::LoadDiskCache(std::__1::atomic<bool> const&, std::__1::function<void (VideoCore::LoadCallbackStage, unsigned long, unsigned long)> const&) + 5345
3   com.citra-emu.citra           	0x00000001063f6793 EmuThread::run() + 131
4   org.qt-project.QtCore         	0x000000011297d6e3 0x11295d000 + 132835
5   libsystem_pthread.dylib       	0x00007fff6e555109 _pthread_start + 148
6   libsystem_pthread.dylib       	0x00007fff6e550b8b thread_start + 15

Thread 21 crashed with X86 Thread State (64-bit):
  rax: 0x000000010f38b320  rbx: 0x0000000000000000  rcx: 0x000070000fb1bf50  rdx: 0x0000000000000000
  rdi: 0x0000000000000006  rsi: 0x0000000000000000  rbp: 0x000070000fb1bfa0  rsp: 0x000070000fb1bf38
   r8: 0x0000000000000000   r9: 0x00000000000007fb  r10: 0x0000000000003680  r11: 0x0000000000000080
  r12: 0x3b86ee3e1be89074  r13: 0x0000000000000006  r14: 0x0000000000000006  r15: 0x00007f81fa59d050
  rip: 0x0000000000000000  rfl: 0x0000000000010246  cr2: 0x0000000000000000
Logical CPU:     2
Error Code:      0x00000014 (no mapping for user instruction read)
Trap Number:     14

It caught my eye that OpenGL and VideoCore both reported close to the crash, so I turned off Enable Hardware Render and Enable Shader JIT to see what would happen. The game is loading again (albeit very sluggish for obvious reasons), but the save state still crashes.

Ok, you will need to use an older build to be able to load the state because recently, changes to CoreTiming was made which most likely made older states incompatible. You can use the link above to bisect when these issues started to happen to pinpoint what the last working build is.

Thanks for the help. After flipping various graphics options on and off using the latest nightly, I got the game working properly again. As for the saved states, I just abandoned them since the time to recover them would take longer than just playing that bit of the game over.

Again, thanks for your help! I really appreciate it and love the app.