Bug#364578: libgtk2.0-0: file selector crashes if linked to libxml

A Mennucc debdev at tonelli.sns.it
Mon Apr 24 20:21:17 UTC 2006


On Mon, Apr 24, 2006 at 05:12:35PM +0200, Lo?c Minier wrote:
> On Mon, Apr 24, 2006, A Mennucc wrote:
> > I was trying to redesign my package 'gpr' to use GTK2,
> > when I ran into a bug that seems a  "GTK vs xml" bug.
> 
>  Looks more like a libxml1 + libxml2 mixture to me than gtk2 + libxml1
>  mixture, could you try reproducing in a program linked to libxml1 and
>  libxml2?

Not exactly. 

Quite reasonably, you could write some code, link it to libxml1 and libxml2
both, so that it would crash: I would not consider this a bug.

What is happening here is that there is some code, linked to gtk2.0 
and libxml1, that crashes; and this is unpredictable, since 
gtk2.0 is not linked to libxml2. So this is a bug.

The problem AFAICT is that the 'fails' binary  uses gtk_file_chooser_button
and then in GTK (*) there is a call to   gtk_file_system_gnome_vfs_new ()
that invokes gnome, that uses libxml2 ; since 'fails' is linked with
libxml version 1, this malfunctions.

It may be a bug in the way the libxml2 is dl_opened , and it is linked. 

Here is a more complete  gdb traceback after the crash

#0  0xa789a7f8 in xmlParserInputShrink () from /usr/lib/libxml.so.1
#1  0xa789f88d in xmlParseCharDataComplex () from /usr/lib/libxml.so.1
#2  0xa70c1cad in xmlParseCharData () from /usr/lib/libxml2.so.2
#3  0xa70ce8e0 in xmlParseChunk () from /usr/lib/libxml2.so.2
#4  0xa7161ef4 in xmlUCSIsCat () from /usr/lib/libxml2.so.2
#5  0xa7162f1a in xmlTextReaderRead () from /usr/lib/libxml2.so.2
#6  0xa73a7055 in gnome_vfs_mime_thaw () from /usr/lib/libgnomevfs-2.so.0
#7  0xa73a740d in gnome_vfs_mime_get_value () from /usr/lib/libgnomevfs-2.so.0
#8  0xa73a41a7 in gnome_vfs_mime_get_icon () from /usr/lib/libgnomevfs-2.so.0
#9  0xa72589c8 in gnome_icon_lookup () from /usr/lib/libgnomeui-2.so.0
#10 0xa73f60eb in gtk_file_system_gnome_vfs_new ()
   from /usr/lib/gtk-2.0/2.4.0/filesystems/libgnome-vfs.so
#11 0xa7d321ff in gtk_file_system_render_icon ()
   from /usr/lib/libgtk-x11-2.0.so.0
#12 0xa7d1dcbc in _gtk_file_chooser_default_get_type ()
   from /usr/lib/libgtk-x11-2.0.so.0
#13 0xa7d25043 in _gtk_file_chooser_default_get_type ()
   from /usr/lib/libgtk-x11-2.0.so.0
#14 0xa7d14cba in _gtk_file_chooser_set_current_folder_path ()
   from /usr/lib/libgtk-x11-2.0.so.0
#15 0xa7d14d50 in gtk_file_chooser_set_current_folder ()
   from /usr/lib/libgtk-x11-2.0.so.0
#16 0xa7d25393 in _gtk_file_chooser_default_get_type ()
   from /usr/lib/libgtk-x11-2.0.so.0
#17 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#18 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#19 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#20 0xa799eff6 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#21 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#22 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#23 0xa7e7547f in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#24 0xa7cec595 in gtk_container_get_focus_hadjustment ()
   from /usr/lib/libgtk-x11-2.0.so.0
#25 0xa7cae4c0 in gtk_box_reorder_child () from /usr/lib/libgtk-x11-2.0.so.0
#26 0xa7ceaafc in gtk_container_forall () from /usr/lib/libgtk-x11-2.0.so.0
#27 0xa7cec5e9 in gtk_container_get_focus_hadjustment ()
   from /usr/lib/libgtk-x11-2.0.so.0
#28 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#29 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#30 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#31 0xa799eff6 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#32 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#33 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#34 0xa7e7547f in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#35 0xa7d1af43 in gtk_file_chooser_dialog_get_type ()
   from /usr/lib/libgtk-x11-2.0.so.0
#36 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#37 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#38 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#39 0xa799eff6 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#40 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#41 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#42 0xa7e7547f in gtk_widget_map () from /usr/lib/libgtk-x11-2.0.so.0
#43 0xa7e81b90 in gtk_window_get_position () from /usr/lib/libgtk-x11-2.0.so.0
#44 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#45 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#46 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#47 0xa799eff6 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#48 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#49 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#50 0xa7e75cd6 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#51 0xa7e824ef in gtk_window_present_with_time ()
   from /usr/lib/libgtk-x11-2.0.so.0
#52 0xa7e82557 in gtk_window_present () from /usr/lib/libgtk-x11-2.0.so.0
#53 0xa7d198cc in gtk_file_chooser_button_get_type ()
   from /usr/lib/libgtk-x11-2.0.so.0
#54 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#55 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#56 0xa799f74d in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#57 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#58 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#59 0xa7cafaa1 in gtk_button_clicked () from /usr/lib/libgtk-x11-2.0.so.0
#60 0xa7cb1518 in _gtk_button_set_depressed ()
   from /usr/lib/libgtk-x11-2.0.so.0
#61 0xa799c11b in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#62 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#63 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#64 0xa799eff6 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#65 0xa79a0b27 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#66 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#67 0xa7cafa11 in gtk_button_released () from /usr/lib/libgtk-x11-2.0.so.0
#68 0xa7cb0ac1 in _gtk_button_paint () from /usr/lib/libgtk-x11-2.0.so.0
#69 0xa7d7d900 in _gtk_marshal_BOOLEAN__BOXED ()
   from /usr/lib/libgtk-x11-2.0.so.0
#70 0xa798f3b8 in g_cclosure_new_swap () from /usr/lib/libgobject-2.0.so.0
#71 0xa798fa5b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#72 0xa799f952 in g_signal_stop_emission () from /usr/lib/libgobject-2.0.so.0
#73 0xa79a08e5 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#74 0xa79a0ede in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#75 0xa7e6f3e4 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#76 0xa7d7bd2d in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#77 0xa7d7c1a3 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#78 0xa7c0fbfa in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#79 0xa791c691 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#80 0xa791f9d7 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#81 0xa791ff28 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#82 0xa7d7b341 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#83 0x08048931 in main (argc=1, argv=0xafb69684) at test.c:81

a.

-- 
Andrea Mennucc
 "Ukn ow,Ifina llyfixe dmysp acebar.ohwh atthef"





More information about the Pkg-gnome-maintainers mailing list