GNOME Bugzilla – Bug 328109
drivel crashes on log in
Last modified: 2009-08-29 22:12:50 UTC
drivel crashes after pressing Log In button. This is on Fedora Rawhide with the drivel-2.0.2-1.fc5.x86_64 package. The same version works fine on Fedora Core 4. Stderr output: (drivel:9085): Gtk-WARNING **: Theme directory 16x16/status16x16/stock/chart of theme gnome has no size field (drivel:9085): libglade-WARNING **: could not find widget creation function (drivel:9085): GLib-GObject-WARNING **: invalid cast from `GtkLabel' to `EphySpinner' Stack trace:
+ Trace 65473
Thread 1 (process 9085)
Could you try re-running drivel with the "--g-fatal-warnings" flag added so that we can sort out those warnings (which will probably help resolve your issue)?
When running it with "--g-fatal-warnings", only the second warning is displayed: libglade-WARNING **: could not find widget creation function
Do you still get the same stack trace?
This is happening to me as well on Fedora Core 5 x86_64. I was not able to duplicate on FC5-i386. gdb with a breakpoint in ephy_spinner_new does not hit the breakpoint. It segfaults in ephy_spinner_start():: 0x000000000041fffb in ephy_spinner_start (spinner=0x65c6b0) at ephy-spinner.c:649 649 if (spinner->details->timer_task == 0) (gdb) p spinner $1 = (EphySpinner *) 0x65c6b0 (gdb) p *spinner $2 = {parent = {bin = {container = {widget = {object = {parent_instance = { g_type_instance = {g_class = 0x649600}, ref_count = 1, qdata = 0x749d00}, flags = 2098720}, private_flags = 15872, state = 0 '\0', saved_state = 0 '\0', name = 0x79dc20 "progress_spinner", style = 0x630070, requisition = { width = 0, height = 0}, allocation = {x = -1, y = -1, width = 1, height = 1}, window = 0x0, parent = 0x727540}, focus_child = 0x3f0000003f000000, border_width = 0, need_resize = 0, resize_mode = 0, reallocate_redraws = 0, has_focus_chain = 0}, child = 0x79da70}}, details = 0xffffff00000000} (gdb) p *spinner->details Cannot access memory at address 0xffffff00000000
backtrace generated with --g-fatal-warnings Program received signal SIGABRT, Aborted.
+ Trace 67312
Thread 47525155149312 (LWP 14599)
Just to see what would happen, I made the following change: --- msg_queue.c.segv 2006-03-28 23:36:47.000000000 -0800 +++ msg_queue.c 2006-03-28 23:36:52.000000000 -0800 @@ -67,7 +67,7 @@ dialog = glade_xml_get_widget (xml, "progress_dialog"); gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); - spinner = glade_xml_get_widget (xml, "progress_spinner"); + spinner = ephy_spinner_new(); ephy_spinner_start (EPHY_SPINNER (spinner)); label = glade_xml_get_widget (xml, "progress_label"); I get this output but avoid a SegFault: (drivel:15126): libglade-WARNING **: could not find widget creation function (drivel:15126): libglade-WARNING **: could not find widget creation function (drivel:15126): GLib-GObject-WARNING **: invalid cast from `GtkLabel' to `EggDateTime' ** (drivel:15126): CRITICAL **: egg_datetime_set_lazy: assertion `EGG_IS_DATETIME (edt)' failed (drivel:15126): GLib-GObject-WARNING **: unable to set property `text' of type `gchararray' from value of type `GdkPixbuf' (drivel:15126): GLib-GObject-WARNING **: invalid cast from `GtkLabel' to `EggDateTime' ** (drivel:15126): CRITICAL **: egg_datetime_set_display_mode: assertion `EGG_IS_DATETIME (edt)' failed A widget on the progress bar fails to load. On the editor page, the custom date widget dos not load. This is the same behaviour I see on FC5 i386.
I'm not deeply in tune with all the GNOME goings on, but do the last couple comments indicate a libglade bug? If so, can someone point this at libglade instead of drivel?
(drivel:15126): libglade-WARNING **: could not find widget creation function (drivel:15126): libglade-WARNING **: could not find widget creation function These should not be ignored. When Glade can't find the symbol it needs to create a custom widget it shoves in a label to the effect of "[Custom widget creation failed]". check to see what symbols it is trying to call (they're in the Glade file) and that they're not static (which shouldn't be). Then check how you're compiling the binary.
Here's the first widget in the glade file:: <widget class="Custom" id="progress_spinner"> <property name="visible">True</property> <property name="creation_function">ephy_spinner_new</property> It's defined in src/ephy-spinner.c:: GtkWidget * ephy_spinner_new (void) { return GTK_WIDGET (g_object_new (EPHY_TYPE_SPINNER, "visible-window", FALSE, NULL)); } No static there. The second one is probably:: <widget class="Custom" id="date"> <property name="visible">True</property> <property name="creation_function">egg_datetime_new</property> It's defined in src/libegg/egg-datetime.c:: GtkWidget * egg_datetime_new (void) { EggDateTime *edt; edt = g_object_new (EGG_TYPE_DATETIME, NULL); egg_datetime_set_from_time_t (edt, time (NULL)); return GTK_WIDGET (edt); } I can configure --prefix=/usr; make CFLAGS='-O0 -g' and still produce the segfault. Here's ephy-spinner's compile line (Minus -I's):: if gcc -DHAVE_CONFIG_H -DGNOMELOCALEDIR=\""/usr/share/locale"\" -DDRIVEL_GLADE_DIR=\"/usr/share/drivel/glade\" -DDRIVEL_GLADE_FILE=\"drivel.glade\" -DDRIVEL_LANGUAGES_DIR=\"/usr/share/drivel/languages\" -DDATADIR=\""/usr/share"\" -DPREFIX=\""/usr"\" -DLIBDIR=\""/usr/lib"\" -DG_LOG_DOMAIN=\"Drivel\" -DSYSCONFDIR=\""/usr/etc"\" -DPIXMAPDIR=\""/usr/share/pixmaps"\" -std=c89 -O0 -g -MT ephy-spinner.o -MD -MP -MF ".deps/ephy-spinner.Tpo" \ -c -o ephy-spinner.o `test -f 'ephy-spinner.c' || echo './'`ephy-spinner.c; \ then mv -f ".deps/ephy-spinner.Tpo" ".deps/ephy-spinner.Po"; \ else rm -f ".deps/ephy-spinner.Tpo"; exit 1; \ Here's drivel's link line (It was invoked by libtool):: gcc -std=c89 -O0 -g -o drivel about.o atom.o blog_advogato.o blog_atom.o blog_blogger.o blog_lj.o blog_mt.o blog_offline.o dialogs.o drivel_request.o ephy-spinner.o insert_poll_dialog.o query_music_players.o journal.o login.o main.o md5.o msg_queue.o network.o tray.o utils.o xmlrpc.o -pthread -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnome-keyring -lgnomecanvas-2 -lgnome-2 -lpopt -lpangoft2-1.0 -lgnomevfs-2 -lgconf-2 -lglade-2.0 -lgtksourceview-1.0 -lgnomeprint-2-2 -lart_lgpl_2 -lxml2 -lz -lbonobo-2 -lbonobo-activation -lORBit-2 -lgthread-2.0 -lgtkspell -laspell -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -L/usr/lib -lcurl ../src/libegg/libegg.a ./.libs/librbcorba.a Both the Reporter and I are experiencing the SegFault on x86_64. Under i386, I see the [Unable to create custom widget] label you refer to. So there may be an issue with drivel's attempt to setup the custom widget AND a separate issue with libglade's failure method on x86_64.
I don't see anything in the diffs between 2.0.2 and HEAD that should affect this but I've just verified that the bug is not being triggered with current CVS HEAD.
Any word on a new release with this fixed? Until this is fixed, drivel is useless on x86_64 Fedora (Possibly other x86_64 distros as well).
All the quoted code has been removed from / disabled in SVN trunk but I can't test the bug because the blog engine behind the attempted login was not described in the bug report. Closing.