pwmt / zathura

Document viewer
https://pwmt.org/projects/zathura
zlib License
1.86k stars 127 forks source link

Segfault while calling exec #441

Closed sebastinas closed 2 months ago

sebastinas commented 5 months ago

On GitLab by @lifesbest23 on Jan 14, 2024, 07:27


Hey,

Zathura v0.5.4 (built with these build/packaging instructions on an Arch Linux system) running with the mupdf plugin crashes whenever I try to execute any external program with the :exec function with a segfault.

❯ zathura --version
zathura 0.5.4
girara 0.4.1 (runtime: 0.4.1)
(plugin) pdf-mupdf (0.4.1) (/usr/lib/zathura/libpdf-mupdf.so)

The backtrace with gdb is as follows:

Thread 1 "zathura" received signal SIGSEGV, Segmentation fault.
0x0000555555579166 in ?? ()
(gdb) bt
#0  0x0000555555579166 in  ()
#1  0x00007ffff7e8b324 in girara_command_run () at /usr/lib/libgirara-gtk3.so.3
#2  0x00007ffff7e8b58e in girara_callback_inputbar_activate () at /usr/lib/libgirara-gtk3.so.3
#3  0x00007ffff71a66c0 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#4  0x00007ffff71d4a36 in  () at /usr/lib/libgobject-2.0.so.0
#5  0x00007ffff71c2a45 in g_signal_emitv () at /usr/lib/libgobject-2.0.so.0
#6  0x00007ffff76b555e in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff76b6398 in  () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff76bb801 in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff76bbad0 in gtk_bindings_activate_event () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff7757dfd in  () at /usr/lib/libgtk-3.so.0
#11 0x00007ffff768c6cd in  () at /usr/lib/libgtk-3.so.0
#12 0x00007ffff71a6626 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff71d50ea in  () at /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff71c5335 in  () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff7963fec in gtk_window_propagate_key_event () at /usr/lib/libgtk-3.so.0
#19 0x00007ffff79666d4 in  () at /usr/lib/libgtk-3.so.0
#20 0x00007ffff7687829 in  () at /usr/lib/libgtk-3.so.0
#21 0x00007ffff71c4d41 in  () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#24 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#25 0x00007ffff77eed4a in  () at /usr/lib/libgtk-3.so.0
#26 0x00007ffff77ef7b7 in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#27 0x00007ffff7539b77 in  () at /usr/lib/libgdk-3.so.0
#28 0x00007ffff75923e8 in  () at /usr/lib/libgdk-3.so.0
#29 0x00007ffff709ff69 in  () at /usr/lib/libglib-2.0.so.0
#30 0x00007ffff70fe367 in  () at /usr/lib/libglib-2.0.so.0
#31 0x00007ffff709e162 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#32 0x00007ffff77ed3c7 in gtk_main_iteration_do () at /usr/lib/libgtk-3.so.0
#33 0x00007ffff7e831d9 in  () at /usr/lib/libgirara-gtk3.so.3
#34 0x00007ffff7e80adb in girara_callback_view_key_press_event () at /usr/lib/libgirara-gtk3.so.3
#35 0x00007ffff768c6cd in  () at /usr/lib/libgtk-3.so.0
#36 0x00007ffff71a66c0 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#37 0x00007ffff71d4a36 in  () at /usr/lib/libgobject-2.0.so.0
#38 0x00007ffff71c5335 in  () at /usr/lib/libgobject-2.0.so.0
#39 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#40 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#41 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#42 0x00007ffff7963fec in gtk_window_propagate_key_event () at /usr/lib/libgtk-3.so.0
#43 0x00007ffff79666d4 in  () at /usr/lib/libgtk-3.so.0
#44 0x00007ffff7687829 in  () at /usr/lib/libgtk-3.so.0
#45 0x00007ffff71c5b73 in  () at /usr/lib/libgobject-2.0.so.0
#46 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#47 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#48 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#49 0x00007ffff77eed4a in  () at /usr/lib/libgtk-3.so.0
#50 0x00007ffff77ef7b7 in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#51 0x00007ffff7539b77 in  () at /usr/lib/libgdk-3.so.0
#52 0x00007ffff75923e8 in  () at /usr/lib/libgdk-3.so.0
#53 0x00007ffff709ff69 in  () at /usr/lib/libglib-2.0.so.0
#54 0x00007ffff70fe367 in  () at /usr/lib/libglib-2.0.so.0
#55 0x00007ffff70a0b97 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#56 0x00007ffff77ed2df in gtk_main () at /usr/lib/libgtk-3.so.0
#57 0x0000555555560efd in main ()

I also tried installing the zathura-git as well as the girara-git and zathura-pdf-mupdf-git AUR packages and got the same result albeit with a different backtrace:

Thread 1 "zathura" received signal SIGSEGV, Segmentation fault.
0x0000555555579166 in ?? ()
(gdb) bt
#0  0x0000555555579166 in  ()
#1  0x00007ffff7e8b294 in girara_command_run () at /usr/lib/libgirara-gtk3.so.4
#2  0x00007ffff7e8b4fe in girara_callback_inputbar_activate () at /usr/lib/libgirara-gtk3.so.4
#3  0x00007ffff71a66c0 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#4  0x00007ffff71d4a36 in  () at /usr/lib/libgobject-2.0.so.0
#5  0x00007ffff71c2a45 in g_signal_emitv () at /usr/lib/libgobject-2.0.so.0
#6  0x00007ffff76b555e in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff76b6398 in  () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff76bb801 in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff76bbad0 in gtk_bindings_activate_event () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff7757dfd in  () at /usr/lib/libgtk-3.so.0
#11 0x00007ffff768c6cd in  () at /usr/lib/libgtk-3.so.0
#12 0x00007ffff71a6626 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff71d50ea in  () at /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff71c5335 in  () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff7963fec in gtk_window_propagate_key_event () at /usr/lib/libgtk-3.so.0
#19 0x00007ffff79666d4 in  () at /usr/lib/libgtk-3.so.0
#20 0x00007ffff7687829 in  () at /usr/lib/libgtk-3.so.0
#21 0x00007ffff71c5b73 in  () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff71c5c77 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff71c5d34 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#24 0x00007ffff7954cf5 in  () at /usr/lib/libgtk-3.so.0
#25 0x00007ffff77eed4a in  () at /usr/lib/libgtk-3.so.0
#26 0x00007ffff77ef7b7 in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#27 0x00007ffff7539b77 in  () at /usr/lib/libgdk-3.so.0
#28 0x00007ffff75923e8 in  () at /usr/lib/libgdk-3.so.0
#29 0x00007ffff709ff69 in  () at /usr/lib/libglib-2.0.so.0
#30 0x00007ffff70fe367 in  () at /usr/lib/libglib-2.0.so.0
#31 0x00007ffff70a0b97 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#32 0x00007ffff77ed2df in gtk_main () at /usr/lib/libgtk-3.so.0
#33 0x0000555555560efd in main ()

I am running on an arch system with x11 and i3 as window manager, but if any further system information is required I will happily provide it.

sebastinas commented 5 months ago

Could you please install debug symbols or build with debug symbols enabled so that the backtrace contains useful information?

sebastinas commented 5 months ago

On GitLab by @lifesbest23 on Jan 14, 2024, 15:43


Thank you for the fast reply!

I installed the git aur packages with debugging enabled (added --buildtype=debug to the meson commands from the PKGBUILD files) and I get the following output now:

Thread 1 "zathura" received signal SIGSEGV, Segmentation fault.
cmd_exec (session=0x55555563bbb0, argument_list=0x555555a4ee80) at ../zathura/commands.c:549
549 ../zathura/commands.c: File exists.                                                                                                                                                                          
(gdb) bt
#0  cmd_exec (session=0x55555563bbb0, argument_list=0x555555a4ee80) at ../zathura/commands.c:549
#1  0x00007ffff7e8b294 in girara_command_run (session=session@entry=0x55555563bbb0, input=input@entry=0x555555a4be00 "exec echo Hello") at ../girara/commands.c:661
#2  0x00007ffff7e8b4fe in girara_callback_inputbar_activate (entry=<optimized out>, session=0x55555563bbb0) at ../girara/callbacks.c:433
#3  0x00007ffff71a66c0 in g_closure_invoke (closure=0x5555556f70d0, return_value=0x7fffffffa2c0, n_param_values=1, param_values=0x5555563f3800, invocation_hint=0x7fffffffa0a0) at ../glib/gobject/gclosure.c:832
#4  0x00007ffff71d4a36 in signal_emit_unlocked_R.isra.0
    (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x5555556c2270, emission_return=emission_return@entry=0x7fffffffa2c0, instance_and_params=instance_and_params@entry=0x5555563f3800)
    at ../glib/gobject/gsignal.c:3980
#5  0x00007ffff71c2a45 in signal_emitv_unlocked (return_value=0x5555556c2270, detail=0, signal_id=32767, instance_and_params=0x0) at ../glib/gobject/gsignal.c:3304
#6  g_signal_emitv (instance_and_params=instance_and_params@entry=0x5555563f3800, signal_id=signal_id@entry=228, detail=detail@entry=0, return_value=return_value@entry=0x7fffffffa2c0)
    at ../glib/gobject/gsignal.c:3204
#7  0x00007ffff76b555e in gtk_binding_entry_activate (entry=<optimized out>, object=<optimized out>) at ../gtk/gtk/gtkbindings.c:646
#8  0x00007ffff76b6398 in binding_activate
    (binding_set=binding_set@entry=0x555555715b50, entries=entries@entry=0x5555563f38b0 = {...}, object=object@entry=0x5555556c2270 [GiraraEntry], is_release=is_release@entry=0, unbound=unbound@entry=0x7fffffffa37c) at ../gtk/gtk/gtkbindings.c:1455
#9  0x00007ffff76bb801 in gtk_bindings_activate_list (object=object@entry=0x5555556c2270 [GiraraEntry], entries=entries@entry=0x5555563f38b0 = {...}, is_release=0) at ../gtk/gtk/gtkbindings.c:1514
#10 0x00007ffff76bbad0 in gtk_bindings_activate_event (event=0x5555563f4f90, object=0x5555556c2270 [GiraraEntry]) at ../gtk/gtk/gtkbindings.c:1601
#11 gtk_bindings_activate_event (object=0x5555556c2270 [GiraraEntry], event=0x5555563f4f90) at ../gtk/gtk/gtkbindings.c:1581
#12 0x00007ffff7757dfd in gtk_entry_key_press (widget=widget@entry=0x5555556c2270 [GiraraEntry], event=0x5555563f4f90) at ../gtk/gtk/gtkentry.c:4912
#13 0x00007ffff768c6cd in _gtk_marshal_BOOLEAN__BOXED
    (closure=0x555555612690, return_value=0x7fffffffa5b0, param_values=0x7fffffffa640, marshal_data=<optimized out>, invocation_hint=<optimized out>, n_param_values=<optimized out>) at gtk/gtkmarshalers.c:84
#14 0x00007ffff71a6626 in g_closure_invoke (closure=0x555555612690, return_value=0x7fffffffa5b0, n_param_values=2, param_values=0x7fffffffa640, invocation_hint=0x7fffffffa590) at ../glib/gobject/gclosure.c:832
#15 0x00007ffff71d50ea in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x7fffffffa730, detail=detail@entry=0, instance=instance@entry=0x5555556c2270, emission_return=emission_return@entry=0x7fffffffa7b0, instance_and_params=instance_and_params@entry=0x7fffffffa640) at ../glib/gobject/gsignal.c:4020
#16 0x00007ffff71c5335 in signal_emit_valist_unlocked (instance=instance@entry=0x5555556c2270, signal_id=signal_id@entry=68, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffa890)
    at ../glib/gobject/gsignal.c:3625
#17 0x00007ffff71c5c77 in g_signal_emit_valist (instance=0x5555556c2270, signal_id=68, detail=0, var_args=var_args@entry=0x7fffffffa890) at ../glib/gobject/gsignal.c:3355
#18 0x00007ffff71c5d34 in g_signal_emit (instance=instance@entry=0x5555556c2270, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3675
#19 0x00007ffff7954cf5 in gtk_widget_event_internal.part.0.lto_priv.0 (widget=0x5555556c2270 [GiraraEntry], event=0x5555563f4f90) at ../gtk/gtk/gtkwidget.c:7812
#20 0x00007ffff7963fec in gtk_window_propagate_key_event (window=window@entry=0x55555585f5e0 [GtkWindow], event=event@entry=0x5555563f4f90) at ../gtk/gtk/gtkwindow.c:8259
#21 0x00007ffff79666d4 in gtk_window_key_press_event (widget=0x55555585f5e0 [GtkWindow], event=0x5555563f4f90) at ../gtk/gtk/gtkwindow.c:8292
Python Exception <class 'gdb.error'>: value has been optimized out

This is with the following zathura version:

❯ zathura -v
zathura 0.5.4
girara 0.4.2 (runtime: 0.4.2)
(plugin) pdf-mupdf (0.4.1) (/usr/lib/zathura/libpdf-mupdf.so)

I hope this helps a bit? Or do I need to do something else to enable further debugging output? If you want the build output I could also add that.

sebastinas commented 4 months ago

mentioned in commit 3614a24446e05f175849895444edfb8a689016c9