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"

Reply via email to