Le ven 10/05/2002 � 18:07, Xavier Bestel a �crit :
> Le ven 10/05/2002 � 16:16, Owen Taylor a �crit :
> > The first step would be to try to get a backtrace while running the
> > programs with the --sync command line option, since it's possible
> > that it's not the XQueryPointer that is causing the hang but some
> > earlier request.
> >
> > Unfortunately, I'm not sure if either evolution or Galeon will really pass
> > that option through to the main part of the application ... they are both
> > somewhat complicated. But it's worth trying. And it should definitely work
> > for simpler apps. (You can tell if you are running the apps synchronized,
> > because it will be darn slow.)
>
> Right. I did it, here is the bt:
>
> #0 0x411207ce in select () from /lib/libc.so.6
> #1 0x40f7ffdc in _XlcPublicMethods () from /usr/X11R6/lib/libX11.so.6
> #2 0x40edb3ba in _XRead () from /usr/X11R6/lib/libX11.so.6
> #3 0x40edbdc3 in _XReply () from /usr/X11R6/lib/libX11.so.6
> #4 0x40ed7a77 in XSync () from /usr/X11R6/lib/libX11.so.6
> #5 0x40ed7b00 in _XSyncFunction () from /usr/X11R6/lib/libX11.so.6
> #6 0x40ed8068 in XDrawString16 () from /usr/X11R6/lib/libX11.so.6
> #7 0x40e73d9c in gdk_draw_text () from /usr/lib/libgdk-1.2.so.0
> #8 0x4032553c in e_font_draw_utf8_text () from /usr/lib/libgal.so.19
> #9 0x4033e7ed in e_cell_text_set_value () from /usr/lib/libgal.so.19
> #10 0x40339a68 in e_cell_draw () from /usr/lib/libgal.so.19
> #11 0x403603d3 in e_table_item_redraw_range () from /usr/lib/libgal.so.19
> #12 0x40973abf in gnome_canvas_group_get_type () from /usr/lib/libgnomeui.so.32
> #13 0x40976594 in gnome_canvas_new_aa () from /usr/lib/libgnomeui.so.32
> #14 0x40976738 in gnome_canvas_new_aa () from /usr/lib/libgnomeui.so.32
> #15 0x40976799 in gnome_canvas_new_aa () from /usr/lib/libgnomeui.so.32
> #16 0x4102f4fa in g_timeout_add () from /usr/lib/libglib-1.2.so.0
> #17 0x4102e4d8 in g_get_current_time () from /usr/lib/libglib-1.2.so.0
> #18 0x4102eae3 in g_get_current_time () from /usr/lib/libglib-1.2.so.0
> #19 0x4102ec7c in g_main_run () from /usr/lib/libglib-1.2.so.0
> #20 0x40dc67e7 in gtk_main () from /usr/lib/libgtk-1.2.so.0
> #21 0x40468ebd in bonobo_main () from /usr/lib/libbonobo.so.2
> #22 0x0809e473 in main ()
> #23 0x4106f14f in __libc_start_main () from /lib/libc.so.6
>
> What's really interesting is that evolution mail just spew this before:
>
> [xav@bip:~]$ evolution-mail --sync
>
> GnomeVFS-WARNING **: Unable to convert MIME info from UTF-8 to the current locale
>fr_FR@euro. MIME info will probably display wrong.
>
> ** CRITICAL **: file gutf8.c: line 922 (g_utf8_validate): assertion `str != NULL'
>failed.
>
> ** CRITICAL **: file gutf8.c: line 922 (g_utf8_validate): assertion `str != NULL'
>failed.
>
> ** CRITICAL **: file gutf8.c: line 922 (g_utf8_validate): assertion `str != NULL'
>failed.
>
> ** CRITICAL **: file gutf8.c: line 922 (g_utf8_validate): assertion `str != NULL'
>failed.
>
>
> ... a problem with UTF-8 in Xinerama ?
#0 0x40fad7ce in select () from /lib/libc.so.6
#1 0x4029efdc in _XlcPublicMethods () from /usr/X11R6/lib/libX11.so.6
#2 0x401fa3ba in _XRead () from /usr/X11R6/lib/libX11.so.6
#3 0x401fadc3 in _XReply () from /usr/X11R6/lib/libX11.so.6
#4 0x401f6a77 in XSync () from /usr/X11R6/lib/libX11.so.6
#5 0x401f6b00 in _XSyncFunction () from /usr/X11R6/lib/libX11.so.6
#6 0x401f7068 in XDrawString16 () from /usr/X11R6/lib/libX11.so.6
#7 0x40e53d9c in gdk_draw_text () from /usr/lib/libgdk-1.2.so.0
#8 0x41467c35 in NSGetModule () from /usr/lib/mozilla/components/libgfx_gtk.so
#9 0x4144cdae in NSGetModule () from /usr/lib/mozilla/components/libgfx_gtk.so
#10 0x41458634 in NSGetModule () from /usr/lib/mozilla/components/libgfx_gtk.so
... seems we have a winner here. This one was from galeon.
I tried to look through gdk_draw_text, but don't know sufficiently gdk
not X to be helpful here. Perhaps I could put some meaningful printf and
retest ? What do you suggest ?
For info, here is gdk_draw_text:
/* gdk_draw_text
*
* Modified by Li-Da Lho to draw 16 bits and Multibyte strings
*
* Interface changed: add "GdkFont *font" to specify font or fontset explicitely
*/
void
gdk_draw_text (GdkDrawable *drawable,
GdkFont *font,
GdkGC *gc,
gint x,
gint y,
const gchar *text,
gint text_length)
{
GdkWindowPrivate *drawable_private;
GdkFontPrivate *font_private;
GdkGCPrivate *gc_private;
g_return_if_fail (drawable != NULL);
g_return_if_fail (font != NULL);
g_return_if_fail (gc != NULL);
g_return_if_fail (text != NULL);
drawable_private = (GdkWindowPrivate*) drawable;
if (drawable_private->destroyed)
return;
gc_private = (GdkGCPrivate*) gc;
font_private = (GdkFontPrivate*) font;
if (font->type == GDK_FONT_FONT)
{
XFontStruct *xfont = (XFontStruct *) font_private->xfont;
XSetFont(drawable_private->xdisplay, gc_private->xgc, xfont->fid);
if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
{
XDrawString (drawable_private->xdisplay, drawable_private->xwindow,
gc_private->xgc, x, y, text, text_length);
}
else
{
XDrawString16 (drawable_private->xdisplay, drawable_private->xwindow,
gc_private->xgc, x, y, (XChar2b *) text, text_length / 2);
}
}
else if (font->type == GDK_FONT_FONTSET)
{
XFontSet fontset = (XFontSet) font_private->xfont;
XmbDrawString (drawable_private->xdisplay, drawable_private->xwindow,
fontset, gc_private->xgc, x, y, text, text_length);
}
else
g_error("undefined font type\n");
}
Xav
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert