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"