On Mon, 06 Mar 2023 14:40:12 +0000 Reuben Thomas <r...@sc3d.org> wrote:
If I select Help→About XSane, the application pauses for a couple of seconds then crashes. (The changes in Ubuntu’s version are just to depend on a different JPEG library, so I think it’s reasonable to file a bug here.)
Dear Maintainer, I could reproduce it also with a current Bookworm/testing system. It looks like between 0.999-6 (buster/oldstable) and 0.999-12 (bullseye/stable) the file xsane-logo.xpm got moved from path /usr/share/sane/xsane to /usr/share/doc/xsane-common. Unfortunately the about dialog still constructs the old path, does not find there the pixmap and handles this case not carefully. A workaround is to create a symlink and the dialog shows up without crash. Kind regards, Bernhard Core was generated by `xsane'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007fd785b1b665 in IA__gtk_image_set_from_pixmap (image=0x557b947ccdb0, pixmap=0x0, mask=0x557b9456e230) at ../../../../gtk/gtkimage.c:858 858 g_return_if_fail (mask == NULL || (gdb) bt #0 0x00007fd785b1b665 in IA__gtk_image_set_from_pixmap (image=0x557b947ccdb0 [GtkImage], pixmap=0x0, mask=0x557b9456e230) at ../../../../gtk/gtkimage.c:858 #1 0x00007fd785b1b83d in IA__gtk_image_new_from_pixmap (pixmap=pixmap@entry=0x0, mask=0x557b9456e230) at ../../../../gtk/gtkimage.c:606 #2 0x0000557b92ea2d1b in xsane_about_dialog (data=<optimized out>, widget=<optimized out>) at ./src/xsane.c:3523 #6 0x00007fd785f31dbf in <emit signal ??? on instance 0x557b946d60d0 [GtkMenuItem]> (instance=instance@entry=0x557b946d60d0, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3606 #3 0x00007fd785f183b0 in g_closure_invoke (closure=0x557b946d88e0, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffc72ce6750, invocation_hint=invocation_hint@entry=0x7ffc72ce66d0) at ../../../gobject/gclosure.c:832 #4 0x00007fd785f2b076 in signal_emit_unlocked_R (node=node@entry=0x557b946c4540, detail=detail@entry=0, instance=instance@entry=0x557b946d60d0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc72ce6750) at ../../../gobject/gsignal.c:3796 #5 0x00007fd785f31bf5 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc72ce68d0) at ../../../gobject/gsignal.c:3549 #7 0x00007fd785c57d94 in IA__gtk_widget_activate (widget=widget@entry=0x557b946d60d0 [GtkMenuItem]) at ../../../../gtk/gtkwidget.c:5041 #8 0x00007fd785b4baf5 in IA__gtk_menu_shell_activate_item (menu_shell=0x557b94544d80 [GtkMenu], menu_item=0x557b946d60d0 [GtkMenuItem], force_deactivate=<optimized out>) at ../../../../gtk/gtkmenushell.c:1278 #9 0x00007fd785b4be09 in gtk_menu_shell_button_release (widget=0x557b94544d80 [GtkMenu], event=0x557b9489ca70) at ../../../../gtk/gtkmenushell.c:703 #14 0x00007fd785f31dbf in <emit signal ??? on instance 0x557b94544d80 [GtkMenu]> (instance=instance@entry=0x557b94544d80, signal_id=<optimized out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3606 #10 0x00007fd785b391ab in _gtk_marshal_BOOLEAN__BOXED (closure=0x557b944dfd30, return_value=0x7ffc72ce6be0, n_param_values=<optimized out>, param_values=0x7ffc72ce6c40, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ../../../../gtk/gtkmarshalers.c:84 #11 0x00007fd785f183b0 in g_closure_invoke (closure=closure@entry=0x557b944dfd30, return_value=return_value@entry=0x7ffc72ce6be0, n_param_values=2, param_values=param_values@entry=0x7ffc72ce6c40, invocation_hint=invocation_hint@entry=0x7ffc72ce6bc0) at ../../../gobject/gclosure.c:832 #12 0x00007fd785f2b1a5 in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x557b94544d80, emission_return=emission_return@entry=0x7ffc72ce6d30, instance_and_params=instance_and_params@entry=0x7ffc72ce6c40) at ../../../gobject/gsignal.c:3835 #13 0x00007fd785f3142d in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc72ce6de0) at ../../../gobject/gsignal.c:3559 #15 0x00007fd785c58fe4 in gtk_widget_event_internal (widget=widget@entry=0x557b94544d80 [GtkMenu], event=event@entry=0x557b9489ca70) at ../../../../gtk/gtkwidget.c:5010 #16 0x00007fd785c592d5 in IA__gtk_widget_event (widget=widget@entry=0x557b94544d80 [GtkMenu], event=event@entry=0x557b9489ca70) at ../../../../gtk/gtkwidget.c:4807 #17 0x00007fd785b377d4 in IA__gtk_propagate_event (widget=0x557b94544d80 [GtkMenu], event=0x557b9489ca70) at ../../../../gtk/gtkmain.c:2503 #18 0x00007fd785b37c4b in IA__gtk_main_do_event (event=0x557b9489ca70) at ../../../../gtk/gtkmain.c:1698 #19 IA__gtk_main_do_event (event=<optimized out>) at ../../../../gtk/gtkmain.c:1503 #20 0x00007fd785fc0afc in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../../../../../gdk/x11/gdkevents-x11.c:2425 #21 0x00007fd7860f97a9 in g_main_dispatch (context=0x557b94477800) at ../../../glib/gmain.c:3454 #22 g_main_context_dispatch (context=context@entry=0x557b94477800) at ../../../glib/gmain.c:4172 #23 0x00007fd7860f9a38 in g_main_context_iterate (context=0x557b94477800, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4248 #24 0x00007fd7860f9cef in g_main_loop_run (loop=loop@entry=0x557b946c1430) at ../../../glib/gmain.c:4448 #25 0x00007fd785b36b2a in IA__gtk_main () at ../../../../gtk/gtkmain.c:1270 #26 0x0000557b92ead1f3 in xsane_interface (argv=<optimized out>, argc=<optimized out>) at ./src/xsane.c:6024 #27 0x0000557b92e3defb in main (argc=1, argv=0x7ffc72ce7838) at ./src/xsane.c:6217 (gdb) display/i $pc 1: x/i $pc => 0x7fd785b1b665 <IA__gtk_image_set_from_pixmap+245>: cmp %r13,(%rax) (gdb) print/x $rax $1 = 0x1800000000000000 (gdb) print mask $2 = 0x557b9456e230 (gdb) print *mask $3 = {parent_instance = {g_type_instance = {g_class = <error reading variable: Cannot access memory at address 0x1800000000000000>}, ref_count = 1, qdata = 0x20}} (gdb) up #1 0x00007fd785b1b83d in IA__gtk_image_new_from_pixmap (pixmap=pixmap@entry=0x0, mask=0x557b9456e230) at ../../../../gtk/gtkimage.c:606 606 gtk_image_set_from_pixmap (image, pixmap, mask); (gdb) #2 0x0000557b92ea2d1b in xsane_about_dialog (data=<optimized out>, widget=<optimized out>) at ./src/xsane.c:3523 3523 pixmapwidget = gtk_image_new_from_pixmap(pixmap, mask); (gdb) list 3520 3521 xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-logo", 0, ".xpm", XSANE_PATH_SYSTEM); 3522 pixmap = gdk_pixmap_create_from_xpm(about_dialog->window, &mask, bg_trans, filename); 3523 pixmapwidget = gtk_image_new_from_pixmap(pixmap, mask); (gdb) print pixmap $5 = 0x0 (gdb) print (char*)filename $7 = 0x7ffc72ce5570 "/usr/share/sane/xsane/xsane-logo.xpm"