LumaTeam / Luma3DS

Nintendo 3DS "Custom Firmware"
GNU General Public License v3.0
5.31k stars 562 forks source link

Crash when searching code memory in Luigi's Mansion #1542

Open flarn2006 opened 3 years ago

flarn2006 commented 3 years ago

System model: New 3DS XL

SysNAND version (+emu/redNAND version if applicable): 11.14.0-46U

Entrypoint (How/what you're using to boot Luma3DS): fastboot3DS

Luma3DS version: 10.2.1

Luma3DS configuration/options:

Default EmuNAND: N/A

Screen brightness: 4

Splash: Off

Splash duration: 1

PIN lock: Off

New 3DS CPU: Clock

--

Autoboot EmuNAND: N/A

Use EmuNAND FIRM if booting with R: N/A

Enable loading external FIRMs and modules: (x)

Enable game patching: (x)

Show NAND or user string in System Settings: (x)

Show GBA boot screen in patched AGB_FIRM: ( )

Set developer UNITINFO: ( )

Disable Arm11 exception handlers: ( )

Enable Rosalina on SAFE_FIRM: ( )

--

Explanation of the issue: When searching the code memory in Luigi's Mansion (the remake of the original game, not Dark Moon) and it doesn't find what I'm searching for, the system will crash:

An exception occurred

Processor:       Arm11 (core 1)
Exception type:  data abort
Fault status:    Translation - Page
Current process: rosalina (0000000000000000)

R0     0000006D       R1     004FCFF4
R2     00000000       R3     00000000
R4     003FCFFC       R5     004FCFFC
R6     00422FF8       R7     140234D1
R8     00100000       R9     14023300
R10    00000000       R11    00000007
R12    140234D1       SP     14022F00
LR     0000006D       PC     14005134
CPSR   20000010       FPEXC  40000700
FAR    004FD003       Access type: Read

Stack dump:

14022F00: 08 00 00 00 08 00 00 00
[...]     08 00 00 00 08 00 00 00
14022F90: 08 00 00 00 08 00 00 00

I wouldn't be surprised if there's other games which cause this issue as well.

Steps to reproduce:

  1. Start Luigi's Mansion. (CTR-P-BGNE, 00040000001D1900)

  2. Open the Rosalina menu, go to "Process List", select "GreenCub", and press A.

  3. Press R to switch to code memory.

  4. Press Y to open the search screen, then R a few times to increase the number of bytes.

  5. Set the search bytes to something random which is unlikely to exist in memory.

  6. Press Y again to do the search. If it actually does find something, and doesn't crash, repeat from step 4.

Dump file:

dump.zip

X7ox commented 3 years ago

Seems like an unnecessary fix for a very small problem.