libretro / gpsp

gpSP for libretro.
GNU General Public License v2.0
52 stars 52 forks source link

Segmentation fault on RK3566 aarch64 (Powkiddy RGB30) #248

Open metchebe opened 6 months ago

metchebe commented 6 months ago

Device: Powkiddy RGB30 OS: JELOS RK3566-BSP Build system: JELOS build system with docker Build options: platform=unix CPU_ARCH=arm64 HAVE_DYNAREC=1 DEBUG=1

Hello. I get a segmentation fault when trying to load games with gpsp through the retroarch interface. However, when I load the core and game directly from command line, it runs fine.

This is gdb output, which I got with some help, I'm not very experienced with gdb so forgive any lack of information:

(gdb) run
Starting program: /usr/bin/retroarch
warning: Unable to determine the number of hardware watchpoints available.
warning: Unable to determine the number of hardware breakpoints available.
warning: Loadable section "" outside of ELF segments
  in /usr/lib/libmali.so.1
warning: Loadable section "" outside of ELF segments
  in /usr/lib/libmali.so.1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[INFO] RetroArch 1.18.0 (Git 06fa5325f)
[INFO] === Build =======================================
[INFO] Capabilities: ASIMD
[INFO] Version: 1.18.0
[INFO] Git: 06fa5325f
[INFO] Built: Mar 27 2024
[INFO] =================================================
[New Thread 0x7feeacdea0 (LWP 2716)]
[INFO] [Input]: Found input driver: "udev".
[INFO] Cannot resolve save file path.
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] [Core]: Version of libretro API: 1, Compiled against API: 1
[INFO] [Core]: Geometry: 320x240, Aspect: 1.333, FPS: 60.00, Sample rate: 48000.00 Hz.
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Set video size to: fullscreen.
[INFO] [Video]: Starting threaded video driver..
[New Thread 0x7fee2bdea0 (LWP 2717)]
[INFO] [DRM]: Found 2 connectors.
[INFO] [DRM]: Connector 0 connected: no
[INFO] [DRM]: Connector 0 has 0 modes.
[INFO] [DRM]: Connector 1 connected: yes
[INFO] [DRM]: Connector 1 has 1 modes.
[INFO] [DRM]: Connector 1 assigned to monitor index: #1.
[INFO] [DRM]: Mode 0: (720x720) 720 x 720, 59.866882 Hz
[INFO] [GL]: Found GL context: "kms".
[INFO] [GL]: Detecting screen resolution: 720x720.
[INFO] [EGL] Found EGL_EXT_platform_base, trying eglGetPlatformDisplayEXT
arm_release_ver: g13p0-01eac0, rk_so_ver: 3
[New Thread 0x7fedaadea0 (LWP 2719)]
[New Thread 0x7fed29dea0 (LWP 2720)]
[New Thread 0x7feca8dea0 (LWP 2721)]
[New Thread 0x7fe7ffeea0 (LWP 2722)]
[New Thread 0x7fe77eeea0 (LWP 2723)]
[New Thread 0x7fe6fdeea0 (LWP 2724)]
[INFO] [EGL]: EGL version: 1.4
[INFO] [EGL]: Current context: 0x7fe814da50.
[INFO] [KMS]: New FB: 720x720 (stride: 2880).
[INFO] [GL]: Vendor: ARM, Renderer: Mali-G52.
[INFO] [GL]: Version: OpenGL ES 3.2 v1.g13p0-01eac0.fdf91928d758c45c1787782175b35c6a.
[INFO] [GL]: Using resolution 720x720.
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[New Thread 0x7fe67ceea0 (LWP 2725)]
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [Video]: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
[WARN] [udev]: Full-screen pointer won't be available.
[INFO] [udev]: Keyboard #0: "adc-keys" (/dev/input/event1).
[INFO] [udev]: Keyboard #1: "rk805 pwrkey" (/dev/input/event0).
[INFO] [udev]: Keyboard #2: "gpio-keys" (/dev/input/event2).
[INFO] [udev]: Keyboard #3: "rk-headset" (/dev/input/event4).
[INFO] [udev]: Pad #0 (/dev/input/event3) supports 0 force feedback effects.
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Video]: Found display server: "kms".
[WARN] [udev]: Mouse grab/ungrab feature unavailable.
[INFO] [ALSA] Using ALSA version 1.2.10
[New Thread 0x7fe5b8eea0 (LWP 2732)]
[New Thread 0x7fe537eea0 (LWP 2733)]
[INFO] [ALSA]: Using FLOAT_LE sample format for PLAYBACK device "alsa_playback.retroarch"
[INFO] [ALSA]: Period: 4 periods per buffer (384 frames, 3072 bytes)
[INFO] [ALSA]: Buffer size: 1536 frames (12288 bytes)
[INFO] [ALSA]: Can pause: yes.
[INFO] [ALSA]: Initialized PLAYBACK device "alsa_playback.retroarch"
[New Thread 0x7fe4adeea0 (LWP 2736)]
[INFO] [Audio]: Started synchronous audio driver.
[ERROR] [Microphone]: Failed to start microphone driver. Will continue without audio input.
[INFO] [Display]: Found display driver: "gl".
[Detaching after vfork from child process 2737]
[INFO] [Playlist]: Loading history file: "/storage/.config/retroarch/content_history.lpl".
[INFO] [Playlist]: Loading history file: "/storage/.config/retroarch/content_music_history.lpl".
[INFO] [Playlist]: Loading history file: "/storage/.config/retroarch/content_video_history.lpl".
[INFO] [Playlist]: Loading history file: "/storage/.config/retroarch/content_image_history.lpl".
[INFO] [Playlist]: Loading favorites file: "/storage/.config/retroarch/content_favorites.lpl".
[INFO] [KMS]: New FB: 720x720 (stride: 2880).
[INFO] [KMS]: New FB: 720x720 (stride: 2880).
[INFO] [Content]: Updating firmware status for: "/tmp/cores/debug/gpsp_libretro.so" on "/storage/roms/bios".
[INFO] [Core]: Using content: "/storage/roms/downloads/Celeste Classic (v1.0).gba".
[INFO] [Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] [Core]: Unloading core..
[INFO] [Core]: Unloading core symbols..
[Thread 0x7fee2bdea0 (LWP 2717) exited]
[INFO] Threaded video stats: Frames pushed: 266, Frames dropped: 0.
[Thread 0x7fe4adeea0 (LWP 2736) exited]
[Thread 0x7fe537eea0 (LWP 2733) exited]
[Thread 0x7fe5b8eea0 (LWP 2732) exited]
[INFO] RetroArch 1.18.0 (Git 06fa5325f)
[INFO] === Build =======================================
[INFO] Capabilities: ASIMD
[INFO] Version: 1.18.0
[INFO] Git: 06fa5325f
[INFO] Built: Mar 27 2024
[INFO] =================================================
[Thread 0x7feeacdea0 (LWP 2716) exited]
[New Thread 0x7feeacdea0 (LWP 2757)]
[INFO] [Input]: Found input driver: "udev".
[INFO] [Core]: Loading dynamic libretro core from: "/tmp/cores/debug/gpsp_libretro.so"
[INFO] [Overrides]: Redirecting save file to "/storage/roms/downloads/Celeste Classic (v1.0).srm".
[INFO] [Overrides]: Redirecting save state to "/storage/.config/retroarch/states/Celeste Classic (v1.0).state".
[INFO] [Environ]: GET_LOG_INTERFACE.
[INFO] [Environ]: GET_PERF_INTERFACE.
[INFO] [Environ]: GET_VFS_INTERFACE. Core requested version >= V2, providing V3.
[INFO] [Environ]: GET_CORE_OPTIONS_VERSION.
[INFO] [Environ]: GET_LANGUAGE: "0".
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL.
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_NETPACKET_INTERFACE.
[INFO] [Overrides]: Redirecting save file to "/storage/roms/downloads/Celeste Classic (v1.0).srm".
[INFO] [Overrides]: Redirecting save state to "/storage/.config/retroarch/states/Celeste Classic (v1.0).state".
[INFO] [Content]: Content loading skipped. Implementation will load it on its own.
[INFO] [Environ]: SET_AUDIO_BUFFER_STATUS_CALLBACK.
[INFO] [Environ]: SET_INPUT_DESCRIPTORS:
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] [Environ]: SYSTEM_DIRECTORY: "/storage/roms/bios".
[INFO] [Environ]: GET_RUMBLE_INTERFACE.

Thread 1 "retroarch" received signal SIGSEGV, Segmentation fault.
0x0000007fedfcc5dc in block_lookup_translate_arm (pc=8) at cpu_threaded.c:2634
2634    cpu_threaded.c: No such file or directory.
(gdb) bt f
#0  0x0000007fedfcc5dc in block_lookup_translate_arm (pc=8) at cpu_threaded.c:2634
        blkptr = 0x0
        result = false
        key = 8
        bhdr = 0x10
        blk_offset_addr = 0x7fee1d4244 <rom_branch_hash+247532>
        hash_target = 61883
        blk_offset = 0
        pcregion = 0 '\000'
        location = <optimized out>
        block_tag = <optimized out>
        thumb = 0
#1  0x0000007fedfcca2c in block_lookup_address_arm (pc=8) at cpu_threaded.c:2655
        ret = 0x722061207075206b <error: Cannot access memory at address 0x722061207075206b>
        i = 0
#2  0x0000007fee0a277c in init_bios_hooks () at cpu_threaded.c:3338
No locals.
#3  0x0000007fedfcc1bc in init_emitter (must_swap=false) at arm/arm64_emit.h:1883
No locals.
#4  0x0000007fedfa74f4 in init_main () at main.c:116
        i = 4
#5  0x0000007fedfa7b10 in reset_gba () at main.c:305
No locals.
#6  0x0000007fedfc665c in retro_load_game (info=0x12ed3b0) at libretro/libretro.c:1123
        filename_bios = "/storage/roms/bios/gba_bios.bin\000L\000\000\000\000\000\000\000\004\000\000\000\177\000\000\000@\024\212\357\177\000\000\000[Content]: Content loading skipped. Implementation will load it on its own.\n\0033\0033\000\274\274\274\300\274\274\274\000\274\274\274\300\274\274\274@\024\212\357\177\000\000\000\330\363\203\357\177\000\000\000l\304p\357\177\000\000\000easonabl\230\361J\000\000\000\000\000\020\b\377\377\177\000\000\000"...
        dir = 0x7feeafc6e5 "/storage/roms/bios"
        fmt = RETRO_PIXEL_FORMAT_RGB565
        bios_loaded = true
        rumbleif = {set_rumble_state = 0x465130}
#7  0x0000000000428540 in ?? ()
No symbol table info available.
#8  0x000000000043de60 in ?? ()
No symbol table info available.
#9  0x0000000000440e64 in ?? ()
No symbol table info available.
#10 0x000000000042be64 in ?? ()
No symbol table info available.
#11 0x000000000041d390 in ?? ()
No symbol table info available.
#12 0x0000000000420bd8 in ?? ()
No symbol table info available.
#13 0x000000000043e730 in ?? ()
No symbol table info available.
#14 0x000000000043fee8 in ?? ()
No symbol table info available.
#15 0x00000000005b2858 in ?? ()
No symbol table info available.
#16 0x00000000005a5110 in ?? ()
No symbol table info available.
#17 0x0000000000566e30 in ?? ()
No symbol table info available.
#18 0x00000000005a002c in ?? ()
No symbol table info available.
#19 0x00000000005a56dc in ?? ()
No symbol table info available.
#20 0x000000000042a790 in ?? ()
No symbol table info available.
#21 0x0000000000421aac in ?? ()
No symbol table info available.
#22 0x0000007fef6c742c in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#23 0x0000007fef6c7500 in __libc_start_main () from /usr/lib/libc.so.6
No symbol table info available.
#24 0x00000000004139b0 in ?? ()
No symbol table info available.
(gdb) continue
Continuing.
Unable to fetch general registers: No such process.
(gdb) [Thread 0x7feeacdea0 (LWP 2757) exited]
[Thread 0x7fe67ceea0 (LWP 2725) exited]
[Thread 0x7fe6fdeea0 (LWP 2724) exited]
[Thread 0x7fe77eeea0 (LWP 2723) exited]
[Thread 0x7fe7ffeea0 (LWP 2722) exited]
[Thread 0x7feca8dea0 (LWP 2721) exited]
[Thread 0x7fed29dea0 (LWP 2720) exited]
[Thread 0x7ff7fbb020 (LWP 2714) exited]
[Thread 0x7fedaadea0 (LWP 2719) exited]
[New process 2714]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
andymcca commented 5 months ago

I could be wrong but it looks like it's crashing when trying to load the BIOS file (gba_bios.bin).

When running through the command line it may be falling back to using the Built-In BIOS instead. Could you try changing your gpsp config in RA to specifically use the Built-In BIOS and see if you still get the same issue? Could be a bad BIOS dump file.