openxr-explorer
openxr-explorer copied to clipboard
segfault on key release with Neo2
On Linux / Debian Sid when I run openxr-explorer from the console I usually/often get the following segfault with the Neo keyboard layout I'm using:
$ gdb openxr-explorer
...
(gdb) core core.dump
...
#0 0x000055c53e7f8da5 in ImGui_ImplX11_ProcessEvent (event=event@entry=0x55c53f5d67d0)
at /home/linus/dev-priv/vr/openxr-explorer/openxr-explorer.git/src/openxrexplorer/imgui/imgui_impl_x11.cpp:466
466 io.KeysDown[k - 0xFF00] = 0;
[Current thread is 1 (Thread 0x7f22eb807740 (LWP 301445))]
(gdb) bt
#0 0x000055c53e7f8da5 in ImGui_ImplX11_ProcessEvent (event=event@entry=0x55c53f5d67d0)
at /home/linus/dev-priv/vr/openxr-explorer/openxr-explorer.git/src/openxrexplorer/imgui/imgui_impl_x11.cpp:466
#1 0x000055c53e7f9768 in shell_loop (step=step@entry=0x55c53e7f8f30 <_FUN()>)
at /home/linus/dev-priv/vr/openxr-explorer/openxr-explorer.git/src/openxrexplorer/imgui/imgui_skg.cpp:347
#2 0x000055c53e77f2d8 in main (arg_count=<optimized out>, args=<optimized out>)
at /home/linus/dev-priv/vr/openxr-explorer/openxr-explorer.git/src/openxrexplorer/imgui/imgui_skg.cpp:60
(gdb)
When I run openxr-explorer from the console with $ sleep 5; ./openxr-explorer
and make sure to release all keys before the 5 seconds are over then I get no crash.
Also, I only seem to get this crash with the German Neo2 keyboard layout and when using its alternative Enter key via a modifier key. Which is accessible by holding the AltGr key and then pressing the V key for instance on both an English QWERTY or a German QWERTZ keyboard (as shown in the picture at the top of the linked page, after clicking on "Ebene 4" = "Layer 4"). So the easiest way to reproduce is:
$ setxkbmap de neo
$ sleep 5; ./openxr-explorer
-> Execute with Neo's Enter via AltGr+V
-> release V, but keep holding AltGr
-> wait for the 5 seconds to pass and the openxr-explorer GUI to appear
-> release AltGr
-> openxr-explorer segfaults immediately
The openxr-explorer version I'm trying is the current Git main branch.
Edit:
I can also trigger this issue with a standard, typical German keyboard layout (Neo is more a niche thing):
$ setxkbmap de
$ sleep 5; ./openxr-explorer
-> Execute with Enter key, release before the 5 seconds finish
-> press & hold AltGr before the 5 seconds finish
-> wait for the 5 seconds to pass and the openxr-explorer GUI to appear
-> release AltGr
-> openxr-explorer segfaults immediately
However the same approach does not seem to crash with "setxkbmap us" instead of "setxkbmap de".