Gtk2 perl core dump




Greetings,

I've come across a core dump in perl v5.8.5 with modules Gtk2-1.061
and Glib-1.061. I have appended a smallish but probably not minimal
bit of test code, the execution output, and a gdb stack trace of
perl. I'm running this on Fedora Core 2, and have yet to try it on
other platforms.

I haven't gone much further looking into it as I'm fairly new to
Gtk2, and haven't done much serious GUI programming since the era of
the Motif/OpenLook turf wars, but I would appreciate any help or
workarounds for this.

Cheers,

Chris LaReau


######## dumpage.pl

# Usage: perl dumpage.pl
# Type 'foo' in the Entry widget. Hit Tab twice. Type 'bar'. Tab twice. Crash.

use strict;
use warnings 'all';
use Gtk2 -init;

my $window = Gtk2::Window->new;
my $frame = Gtk2::Frame->new;
$window->add($frame);
my $vbox = Gtk2::VBox->new;
$frame->add($vbox);
my $entry = Gtk2::Entry->new;
$vbox->add($entry);
$entry->signal_connect('focus-out-event', \&on_entry_focus_out);
$window->show_all;
Gtk2->main;

sub on_entry_focus_out {
    my ($w) = @_;
    my $parent = $w->get('parent');
    my $text = $w->get_text;
    my @kids = $parent->get_children;
    for my $k (@kids) {
        $parent->remove($k) if ref($k) eq 'Gtk2::CheckButton';
    }
    my $checkbox = Gtk2::CheckButton->new_with_label($text);
    $parent->add($checkbox);
    $parent->show_all;
    return undef;
}

######## execution

$ perl dumpage.pl
Gtk-CRITICAL **: file gtkwidget.c: line 5810 (gtk_widget_get_toplevel): assertion `GTK_IS_WIDGET (widget)' 
failed at dumpage.pl line 17.
Gtk-CRITICAL **: file gtkwidget.c: line 5810 (gtk_widget_get_toplevel): assertion `GTK_IS_WIDGET (widget)' 
failed at dumpage.pl line 17.
Segmentation fault (core dumped)

######## stack trace

(gdb) where
#0  0x056dd1d3 in gtk_container_set_focus_child ()
   from /usr/lib/libgtk-x11-2.0.so.0
#1  0x05860500 in gtk_widget_grab_focus () from /usr/lib/libgtk-x11-2.0.so.0
#2  0x056f9dd9 in gtk_entry_get_type () from /usr/lib/libgtk-x11-2.0.so.0
#3  0x0031b661 in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#4  0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#5  0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#6  0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#7  0x0031a127 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#8  0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#9  0x058603a6 in gtk_widget_grab_focus () from /usr/lib/libgtk-x11-2.0.so.0
#10 0x05860636 in gtk_widget_grab_focus () from /usr/lib/libgtk-x11-2.0.so.0
#11 0x05760644 in gtk_marshal_VOID__UINT_STRING ()
   from /usr/lib/libgtk-x11-2.0.so.0
#12 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#13 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#14 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#15 0x00319efe in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#16 0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#17 0x05862fca in gtk_widget_child_focus () from /usr/lib/libgtk-x11-2.0.so.0
#18 0x056de39b in gtk_container_get_children ()
   from /usr/lib/libgtk-x11-2.0.so.0
#19 0x056dd89b in gtk_container_get_children ()
   from /usr/lib/libgtk-x11-2.0.so.0
#20 0x05760644 in gtk_marshal_VOID__UINT_STRING ()
   from /usr/lib/libgtk-x11-2.0.so.0
#21 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#22 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#23 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#24 0x00319efe in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#25 0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#26 0x05862fca in gtk_widget_child_focus () from /usr/lib/libgtk-x11-2.0.so.0
#27 0x056de39b in gtk_container_get_children ()
   from /usr/lib/libgtk-x11-2.0.so.0
#28 0x056dd89b in gtk_container_get_children ()
   from /usr/lib/libgtk-x11-2.0.so.0
#29 0x05760644 in gtk_marshal_VOID__UINT_STRING ()
   from /usr/lib/libgtk-x11-2.0.so.0
#30 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#31 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#32 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#33 0x00319efe in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#34 0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#35 0x05862fca in gtk_widget_child_focus () from /usr/lib/libgtk-x11-2.0.so.0
#36 0x0586df63 in gtk_window_propagate_key_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#37 0x05760644 in gtk_marshal_VOID__UINT_STRING ()
   from /usr/lib/libgtk-x11-2.0.so.0
#38 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#39 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#40 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#41 0x00319efe in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#42 0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#43 0x05862fca in gtk_widget_child_focus () from /usr/lib/libgtk-x11-2.0.so.0
#44 0x0586dc29 in gtk_window_propagate_key_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#45 0x0031bcde in g_cclosure_marshal_VOID__ENUM ()
   from /usr/lib/libgobject-2.0.so.0
#46 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#47 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#48 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#49 0x0031989f in g_signal_emitv () from /usr/lib/libgobject-2.0.so.0
#50 0x0569ef5b in gtk_bin_get_child () from /usr/lib/libgtk-x11-2.0.so.0
#51 0x0569fdad in gtk_binding_set_add_path () from /usr/lib/libgtk-x11-2.0.so.0
#52 0x056a0055 in gtk_binding_set_add_path () from /usr/lib/libgtk-x11-2.0.so.0
#53 0x056a02a0 in gtk_bindings_activate_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#54 0x0585f596 in gtk_widget_mnemonic_activate ()
   from /usr/lib/libgtk-x11-2.0.so.0
#55 0x0586db33 in gtk_window_propagate_key_event ()
   from /usr/lib/libgtk-x11-2.0.so.0
#56 0x05760434 in gtk_marshal_VOID__UINT_STRING ()
   from /usr/lib/libgtk-x11-2.0.so.0
#57 0x003074f7 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#58 0x00307160 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#59 0x0031ab95 in g_signal_emit_by_name () from /usr/lib/libgobject-2.0.so.0
#60 0x00319efe in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#61 0x0031a424 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#62 0x0585f9e5 in gtk_widget_send_expose () from /usr/lib/libgtk-x11-2.0.so.0
#63 0x0575ea7e in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#64 0x0575d726 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#65 0x003e6025 in gdk_x11_register_standard_event_type ()
   from /usr/lib/libgdk-x11-2.0.so.0
#66 0x001e11e2 in g_main_depth () from /usr/lib/libglib-2.0.so.0
#67 0x001e22d8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#68 0x001e2610 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#69 0x001e2c53 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#70 0x0575cff3 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#71 0x005cbd51 in XS_Gtk2_main ()
   from /home/lareau/Korora/web/run/lib/perl5/site_perl/5.8.5/i686-linux/auto/Gtk2/Gtk2.so
#72 0x080af3c6 in Perl_pp_entersub ()
#73 0x080a912c in Perl_runops_standard ()
#74 0x080636a5 in perl_run ()
#75 0x0805e2a2 in main ()




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]