ares-emulator / ares

ares is a cross-platform, open source, multi-system emulator, focusing on accuracy and preservation.
https://ares-emu.net
Other
864 stars 105 forks source link

Crash when trying to run N64 on Linux without Vulkan support #1546

Open risingPhil opened 1 week ago

risingPhil commented 1 week ago

Describe the bug I'm trying to run Ares on my Kubuntu 18.04 installation. I built using make -j 12 && make install.

I have an Nvidia Quadro P1000 with binary driver 530.41.03 and I don't have Vulkan support as far as I know.

Yet the application crashes on vulkan stuff when trying to launch a rom, even though OpenGL 3.2 is selected as my video driver in the Ares settings:

image image

To Reproduce I can reproduce this on both Ares v138 and v139.

Expected behaviour No crash

Additional Info Backtrace grabbed with GDB:

GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./ares...(no debugging symbols found)...done.
(gdb) r
Starting program: /home/philippe/.local/bin/ares 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe7b6b700 (LWP 11544)]
[New Thread 0x7fffe736a700 (LWP 11545)]
[New Thread 0x7fffe62ea700 (LWP 11575)]
OpenGL: Failed to load librashader: shaders will be disabled
[New Thread 0x7fffc2d25700 (LWP 11578)]
[New Thread 0x7fffb9754700 (LWP 11580)]
[New Thread 0x7fffb8f53700 (LWP 11582)]
[New Thread 0x7fffabfff700 (LWP 11584)]
[New Thread 0x7fffab171700 (LWP 11585)]

Thread 1 "ares" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in  ()
#1  0x0000555555a12caf in Vulkan::Device::init_workarounds() ()
#2  0x0000555555a4c632 in Vulkan::Device::set_context(Vulkan::Context const&) ()
#3  0x0000555555ee985c in ares::Nintendo64::Vulkan::Implementation::Implementation(unsigned char*, unsigned int) ()
#4  0x0000555555ee9aa2 in ares::Nintendo64::Vulkan::load(nall::shared_pointer<ares::Core::Object>) ()
#5  0x00005555559c2133 in ares::Nintendo64::System::load(nall::shared_pointer<ares::Core::System>&, nall::string) ()
#6  0x00005555559f8334 in ares::Nintendo64::load(nall::shared_pointer<ares::Core::System>&, nall::string) ()
#7  0x0000555555c83960 in Nintendo64::load() ()
#8  0x0000555555c4e5a6 in Emulator::load(nall::string const&) ()
#9  0x0000555555c69ce0 in Program::load(nall::string) ()
#10 0x0000555555c6a38e in Program::load(nall::shared_pointer<Emulator>, nall::string) ()
#11 0x0000555555dc768f in Presentation::loadEmulators()::{lambda()#1}::operator()() const ()
#12 0x00007ffff52c60bd in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff52d900e in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff52e16f5 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff52e210f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007ffff63269d6 in gtk_widget_activate () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007ffff61f8f76 in gtk_menu_shell_activate_item () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ffff61f91f2 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff61dc8f7 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007ffff52c62f6 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff52e13ad in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff52e210f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#23 0x00007ffff6324534 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#24 0x00007ffff61d986e in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00007ffff61db948 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#26 0x00007ffff5cec765 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#27 0x00007ffff5d1cf92 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#28 0x00007ffff4feb537 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007ffff4feb770 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007ffff4feb7fc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007ffff61dab01 in gtk_main_iteration_do () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#32 0x000055555584e8fc in hiro::pApplication::processEvents() ()
#33 0x000055555584ea86 in hiro::pApplication::run() ()
#34 0x00005555557634a3 in nall::main(nall::Arguments) ()
#35 0x0000555555717253 in nall::main(int, char**) ()
#36 0x00007ffff7a03c87 in __libc_start_main (main=
    0x5555557177b0 <main>, argc=1, argv=0x7fffffffdd18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd08) at ../csu/libc-start.c:310
#37 0x000055555578878a in _start ()

I have a core file here: https://drive.google.com/file/d/1qBeocEhnVOvfNjmzlo0_QEOfcrK0nvtz/view?usp=sharing

LukeUsher commented 1 week ago

A crash is rather odd, but Vulkan is required for N64 emulation and it will not work without it; the expected behavior is that you'd have missing or broken video output.

risingPhil commented 1 week ago

I just saw this though: image

source: https://ares-emu.net/news/ares-v127--released

Also: I think I may have read somewhere before that Vulkan may be required, but I can't find it anywhere on the website when I actually try to look for it.

I don't know. In any case a crash is unexpected indeed.

I can run the emulator perfectly when I switch to Windows though. But I suspect the nvidia driver there DOES have Vulkan support (although I haven't bothered to verify that yet)

remutro commented 1 week ago

MAME RDP support was discontinued in newer releases and is no longer available. You can't use the N64 core without Vulkan support as it is required by parallel-rdp.

The video options in Settings > Drivers are strictly for putting game images on the screen and don't impact cores directly.

risingPhil commented 1 week ago

allright.

So it appears the only real bug here is that it crashes instead of showing some kind of error notification.

I don't know if anyone is inclined to fix this or not. It's up to you whether to close this ticket or not. I can imagine this to be low priority if you decide to fix it.

Anyway, thanks for responding so quickly.