Skip to content

Missing module names in newer applications #2567

@Coxxs

Description

@Coxxs

Bug Report

What's the issue you encountered?

The struct containing the module name has changed in SDK 20, causing the Atmosphere gdb stub (monitor get info) and crash reports to stop showing module names.

How can the issue be reproduced?

Use gdb to attach to an application that uses SDK 20 (e.g. Splatoon 3 10.0.0), it no longer shows the module name:

Modules:
  0x0190200000 - 0x0190202fff .elf
  0x0190206000 - 0x019505dfff .elf
  0x0196509000 - 0x0196b6bfff .elf

Crash Report

This is the same in crash reports for applications that uses SDK 20:

...
Module Info:
    Number of Modules:           03
    Module 00:
        Address:                 0000005af9e00000-0000005af9e03000
        Name:                    [283033de]
        Module Id:               283033DEEA3FC0B60104A4790098B9CCDB62D006000000000000000000000000
    Module 01:
        Address:                 0000005af9e06000-0000005afec5e000
        Name:                    [5e219d08]
        Module Id:               5E219D08AE786051873FDCEEB618017DB3DCCEEF000000000000000000000000
...

System Firmware Version

20.1.1

Environment?

  • What bootloader (fusèe, hekate, etc) was Atmosphère launched by: hekate
  • Official release or unofficial build: Atmosphere 1.9.1
  • Do you have additional kips or sysmodules you're loading: -
  • Homebrew software installed: -
  • EmuMMC or SysNAND: -

Additional context?

Old struct:

                    struct {
                        u32  version; // 0
                        s32  path_length;
                        char path[ModuleDefinition::PathLengthMax];
                    } module_path;

New struct:

                    struct {
                        u32  version; // 1
                        u32  unk1;
                        u32  unk2;
                        u32  unk3;
                        s32  path_length;
                        char path[ModuleDefinition::PathLengthMax];
                    } module_path;

Related code:

creport:

if (rodata_start.module_path.zero != 0 || rodata_start.module_path.path_length <= 0) {

dmnt2:

(possibly more)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions