flyinghead / flycast

Flycast is a multiplatform Sega Dreamcast, Naomi, Naomi 2 and Atomiswave emulator
GNU General Public License v2.0
1.39k stars 169 forks source link

[Android] RetroArch killed when loading Naomi CHD due to ANR #1457

Open mrfomt opened 6 months ago

mrfomt commented 6 months ago

Please Note: This form is the minimum required information for submitting bugs.
Removing this form may lead to your issue being closed until it is completed.

Platform / OS / Hardware: Nvidia Shield Android 11, RetroArch 1.17.0, latest Flycast core

Description of the Issue Problem with Naomi and Atomiswave. When starting a game that uses CHD, RetroArch crashes. Roms without CHD starts without problems. Have latest Flycast Core, and Mame romset 0.263 and CHD 0.263 and all the BIOS files from that set.

retroarch2024_03_1510_23_51.log

Debugging Steps Tested

Logs Gathered



Please paste the contents of the log / logs here
You may leave this field blank if you have none.

[Content]: Updating firmware status for: "/data/user/0/com.retroarch/cores/flycast_libretro_android.so" on "/storage/525F-D291/Hyperspin/Emulators/BIOS".
[Core]: Using content: "/storage/525F-D291/Hyperspin/Emulators/MAME/roms/cleoftp.zip".
[Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[Core]: Unloading core..
[Core]: Unloading core symbols..
[Video]: Average monitor Hz: 59.737157 Hz. (19.372 % frame time deviation, based on 2048 last samples).
RetroArch 1.17.0 (Git ad8975c)
=== Build =======================================
Capabilities: ASIMD 
[INFO] Version: 1.17.0
[INFO] Git: ad8975c
[INFO] Built: Feb  3 2024
[INFO] =================================================
[Input]: Found input driver: "android".
[Core]: Loading dynamic libretro core from: "/data/user/0/com.retroarch/cores/flycast_libretro_android.so"
[Overrides]: Core-specific overrides found at "/storage/emulated/0/RetroArch/config/Flycast/Flycast.cfg".
[Overrides]: Game-specific overrides found at "/storage/emulated/0/RetroArch/config/Flycast/cleoftp.cfg".
[Overrides]: Game-specific overrides stacking on top of previous overrides.
[Config]: Loading config: "/storage/emulated/0/Android/data/com.retroarch/files/retroarch.cfg".
[Config]: Appending override config: "/storage/emulated/0/RetroArch/config/Flycast/Flycast.cfg".
[Config]: Appending override config: "/storage/emulated/0/RetroArch/config/Flycast/cleoftp.cfg".
[Overrides]: Redirecting save file to "/storage/emulated/0/RetroArch/saves/Flycast/cleoftp.srm".
[Overrides]: Redirecting save state to "/storage/emulated/0/RetroArch/states/Flycast/cleoftp.state".
[Environ]: GET_CORE_OPTIONS_VERSION.
[Environ]: GET_LANGUAGE: "0".
[Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL.
[Environ]: SET_CONTROLLER_INFO.
[Environ]: GET_LOG_INTERFACE.
shell/libretro/libretro.cpp:321 N[BOOT]: retro_init
[Environ]: GET_PERF_INTERFACE.
[Environ]: SET_PIXEL_FORMAT: XRGB8888.
[Environ]: SET_KEYBOARD_CALLBACK.
[Environ]: GET_DISK_CONTROL_INTERFACE_VERSION.
[Environ]: SET_DISK_CONTROL_EXT_INTERFACE.
core/hw/mem/addrspace.cpp:431 N[VMEM]: Info: nvmem is enabled
core/hw/mem/addrspace.cpp:467 N[VMEM]: BASE 0x3087c10000 RAM(16 MB) 0x3093c10000 VRAM64(8 MB) 0x308bc10000 ARAM(2 MB) 0x30a7c10000
[Content]: Content loading skipped. Implementation will load it on its own.
shell/libretro/libretro.cpp:1993 N[BOOT]: retro_load_game: /storage/525F-D291/Hyperspin/Emulators/MAME/roms/cleoftp.zip
[Environ]: GET_RUMBLE_INTERFACE.
[Environ]: SYSTEM_DIRECTORY: "/storage/525F-D291/Hyperspin/Emulators/BIOS".
[Environ]: SAVE_DIRECTORY: "/storage/emulated/0/RetroArch/saves/Flycast".
[Environ]: SET_SAVE_STATE_IN_BACKGROUND: yes.
File extension is: .zip
[Environ]: GET_PREFERRED_HW_RENDER, video driver name: vulkan.
[Environ]: GET_PREFERRED_HW_RENDER - Context callback set to RETRO_HW_CONTEXT_VULKAN.
[Environ]: SET_HW_RENDER, context type: vulkan.
Requesting Vulkan context.
[Environ]: SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE.
[Environ]: SAVE_DIRECTORY: "/storage/emulated/0/RetroArch/saves/Flycast".
core/hw/mem/addrspace.cpp:431 N[VMEM]: Info: nvmem is enabled
core/hw/mem/addrspace.cpp:467 N[VMEM]: BASE 0x3087c10000 RAM(32 MB) 0x3093c10000 VRAM64(16 MB) 0x308bc10000 ARAM(8 MB) 0x30a7c10000
core/hw/naomi/naomi_cart.cpp:646 N[NAOMI]: NAOMI GAME ID [CLEOPATRA FORTUNE PLUS] region ff players 2 vertical 0
core/emulator.cpp:54 N[BOOT]: Game ID is [CLEOPATRA FORTUNE PLUS]
core/hw/naomi/naomi_flashrom.cpp:148 N[NAOMI]: Initializing Naomi EEPROM for game CLEOPATRA FORTUNE PLUS          
core/emulator.cpp:54 N[BOOT]: Game ID is [CLEOPATRA FORTUNE PLUS]
[Environ]: SET_ROTATION: 0
[Replay]: Found last replay slot: #0
[SRAM]: Skipping SRAM load.
[Core]: Version of libretro API: 1, Compiled against API: 1
shell/libretro/libretro.cpp:2336 N[RENDERER]: retro_get_system_av_info: Res=1080
[Core]: Geometry: 640x480, Aspect: 1.333, FPS: 60.00, Sample rate: 44100.00 Hz.
[Audio]: Set audio input rate to: 44100.00 Hz.
[Video]: Set video size to: 1498x1080.
[Video]: Using HW render, vulkan driver forced.
[Vulkan]: Vulkan dynamic library loaded.
[Vulkan]: Found vulkan context: "vk_android".
[Vulkan]: Detecting screen resolution: 0x0.
[Vulkan]: Setting swap interval: 1.
[Vulkan]: Created Android surface: 197965057552
[Vulkan]: Got HW context negotiation interface 1.
[Vulkan]: Found GPU at index 0: "NVIDIA Tegra X1 (rev B) (nvgpu)".
[Vulkan]: Using GPU index 0.
[Vulkan]: Using semaphores for WSI acquire.
[Vulkan]: Using GPU: "NVIDIA Tegra X1 (rev B) (nvgpu)".
[Vulkan]: Got 3 swapchain images.
[Android]: Native window size: 1920 x 1080.
[Vulkan]: Using resolution 1920x1080.
[Vulkan]: Using BGRA8888 format.
[Vulkan]: Loading stock shader.
[Joypad]: Found joypad driver: "android".
[Video]: Found display server: "android".
shell/libretro/libretro.cpp:1805 N[RENDERER]: retro_vk_context_reset
core/rend/vulkan/vk_context_lr.cpp:199 N[RENDERER]: GPU Supports Vulkan API: 1.1.178
core/rend/vulkan/vk_context_lr.cpp:202 N[RENDERER]: GPU Supports vkGetPhysicalDeviceProperties2
core/rend/vulkan/vk_context_lr.cpp:227 N[RENDERER]: eR5G5B5A1UnormPack16 not supported for optimal tiling
core/rend/vulkan/vk_context_lr.cpp:241 N[RENDERER]: eR4G4B4A4UnormPack16 not supported for optimal tiling
core/rend/vulkan/vulkan_context.h:269 N[RENDERER]: Using depth format D32SfloatS8Uint tiling Optimal
core/rend/vulkan/vulkan_renderer.cpp:30 N[RENDERER]: VulkanRenderer::Init
[OpenSL]: Requested audio latency: 128 ms.
[OpenSL]: Setting audio latency: Block size = 1024, Blocks = 24, Total = 24576 ...
[Audio]: Started synchronous audio driver.
[Display]: Found display driver: "vulkan".
[Environ]: SET_INPUT_DESCRIPTORS:
[Playlist]: Loading history file: "/storage/emulated/0/Android/data/com.retroarch/files/content_history.lpl".
[Playlist]: Loading history file: "/storage/emulated/0/Android/data/com.retroarch/files/content_music_history.lpl".
[Playlist]: Loading history file: "/storage/emulated/0/Android/data/com.retroarch/files/content_image_history.lpl".
[Playlist]: Loading favorites file: "/storage/emulated/0/Android/data/com.retroarch/files/content_favorites.lpl".
[Android]: Native window size: 1920 x 1080.

**_Screenshots_**

(Replace this line with any issue screenshots)
flyinghead commented 6 months ago

Tested on Android 11 with RA 1.17.0 and the latest Flycast core and all CHD Naomi games I tested loaded without problem.

The issue might be that RA is unresponsive when loading a CHD, which could trigger Android to terminate the app after some timeout. I had some messages about RA being unresponsive during my tests. But choosing Wait resulted in the game starting successfully. I wasn't testing on Nvidia Shield though.

mrfomt commented 6 months ago

You are right. If I turn on "Show ANR-Error in Background". Then I can click wait then the game starts.