|
From: Dave M. <da...@da...> - 2003-07-26 16:17:55
|
On Fri, 2003-07-25 at 15:56, Tony Graham wrote:
[snip]
> You are now into uncharted territory. Do you get any useful messages
> when your app crashes? What is the ldd output?
To try to isolate the problem, I grabbed gnome-hello from GNOME CVS,
built it normally (it worked), and then hacked the configure script to
link against libfo thus:
Index: configure.ac
===================================================================
RCS file: /cvs/gnome/gnome-hello/configure.ac,v
retrieving revision 1.8
diff -u -r1.8 configure.ac
--- configure.ac 16 Jul 2003 05:42:52 -0000 1.8
+++ configure.ac 26 Jul 2003 15:59:00 -0000
@@ -20,7 +20,7 @@
LIBGNOMEUI_REQUIRED=1.96.0
SCROLLKEEPER_REQUIRED=0.1.4
-PKG_CHECK_MODULES(GNOME_HELLO, libgnome-2.0 >= $LIBGNOME_REQUIRED
libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED)
+PKG_CHECK_MODULES(GNOME_HELLO, libgnome-2.0 >= $LIBGNOME_REQUIRED
libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libfo-0.2 >= 0.2.4)
AC_SUBST(GNOME_HELLO_CFLAGS)
AC_SUBST(GNOME_HELLO_LIBS)
I then did re-ran autogen.sh, did a make clean, then a make.
The gnome-hello program now crashes on startup, in a similar way to my
Conglomerate tests; here's a fragment of the backtrace:
(gdb) run
Starting program:
/home/david/coding/gnome-anonymous-cvs/gnome-hello/src/gnome-hello
[New Thread 1094308544 (LWP 25565)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1094308544 (LWP 25565)]
0x00000000 in ?? ()
(gdb) bt
#0 0x00000000 in ?? ()
#1 0x40e0392e in pango_layout_run_get_extents (run=0x80b9b10,
shape_setp=0x0, run_ink=0xbfffb3c0, run_logical=0x80b9cbc) at
pango-layout.c:3751
#2 0x40e037c9 in pango_layout_line_get_extents_real (line=0x80bc0c0,
ink_rect=0x0, logical_rect=0xbfffb3c0) at pango-layout.c:3689
#3 0x40e03947 in pango_layout_line_get_extents (line=0x80b9b10,
ink_rect=0x0, logical_rect=0xbfffb3c0) at pango-layout.c:3774
#4 0x40e00fc9 in get_line_extents_layout_coords (layout=0x80b9960,
line=0x80bc0c0, layout_width=-1, y_offset=0, baseline=0xbfffb44c,
line_ink_layout=0x0,
line_logical_layout=0xbfffb450) at pango-layout.c:1867
#5 0x40e010cd in pango_layout_get_extents_internal (layout=0x80b9960,
ink_rect=0x0, logical_rect=0xbfffb4f0, line_extents=0x0) at
pango-layout.c:1935
#6 0x40e01312 in pango_layout_get_extents (layout=0x80b9b10,
ink_rect=0x0, logical_rect=0xbfffb4f0) at pango-layout.c:2031
#7 0x4025793d in gtk_label_get () from /usr/lib/libgtk-x11-2.0.so.0
#8 0x401d7533 in gtk_accel_label_get_accel_width () from
/usr/lib/libgtk-x11-2.0.so.0
Here's the result of running ldd on the executable:
[david@shirehorse1 src]$ ldd gnome-hello
libgnomeui-2.so.0 => /usr/lib/libgnomeui-2.so.0 (0x40028000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x400b3000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x400bc000)
libbonoboui-2.so.0 => /usr/lib/libbonoboui-2.so.0 (0x400d4000)
libgnomecanvas-2.so.0 => /usr/lib/libgnomecanvas-2.so.0
(0x40136000)
libgnome-2.so.0 => /usr/lib/libgnome-2.so.0 (0x40163000)
libpangoft2-1.0.so.0 =>
/usr/local/lib/pangopdf/libpangoft2-1.0.so.0 (0x40177000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x40196000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x403ea000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x40459000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0
(0x40472000)
libpangoxft-1.0.so.0 =>
/usr/local/lib/pangopdf/libpangoxft-1.0.so.0 (0x40485000)
libpangox-1.0.so.0 => /usr/local/lib/pangopdf/libpangox-1.0.so.0
(0x404a3000)
libbonobo-2.so.0 => /usr/lib/libbonobo-2.so.0 (0x404af000)
libgconf-2.so.4 => /usr/lib/libgconf-2.so.4 (0x40506000)
libgnomevfs-2.so.0 => /usr/lib/libgnomevfs-2.so.0 (0x4053d000)
libbonobo-activation.so.4 => /usr/lib/libbonobo-activation.so.4
(0x40576000)
libORBit-2.so.0 => /usr/lib/libORBit-2.so.0 (0x40589000)
liblinc.so.1 => /usr/lib/liblinc.so.1 (0x405cb000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x405d3000)
libfo-0.2.so.0 => /usr/local/lib/libfo-0.2.so.0 (0x405d8000)
libpdf.so.1 => /usr/local/lib/libpdf.so.1 (0x40867000)
libpangopdflib-1.0.so.0 =>
/usr/local/lib/pangopdf/libpangopdflib-1.0.so.0 (0x408f5000)
libpangogp-1.0.so.0 =>
/usr/local/lib/pangopdf/libpangogp-1.0.so.0 (0x4091f000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x40941000)
libgnomeprint-2-2.so.0 => /usr/lib/libgnomeprint-2-2.so.0
(0x40966000)
libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0x40da8000)
libxslt.so.1 => /usr/lib/libxslt.so.1 (0x40dbf000)
libpango-1.0.so.0 => /usr/local/lib/pangopdf/libpango-1.0.so.0
(0x40dec000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x40e1d000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x40e52000)
libdl.so.2 => /lib/libdl.so.2 (0x40e56000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x40e5a000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x40ec5000)
libz.so.1 => /usr/lib/libz.so.1 (0x40fb0000)
libm.so.6 => /lib/tls/libm.so.6 (0x40fbe000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40fe0000)
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
libpopt.so.0 => /usr/lib/libpopt.so.0 (0x40fee000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40ff7000)
libesd.so.0 => /usr/lib/libesd.so.0 (0x41015000)
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x4101d000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x41042000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x41094000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x41098000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x410a0000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x410ae000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x410c0000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x410c8000)
libORBitCosNaming-2.so.0 => /usr/lib/libORBitCosNaming-2.so.0
(0x411a8000)
libssl.so.4 => /lib/libssl.so.4 (0x411ad000)
libcrypto.so.4 => /lib/libcrypto.so.4 (0x411e2000)
librt.so.1 => /lib/tls/librt.so.1 (0x412d3000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x412e5000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libresolv.so.2 => /lib/libresolv.so.2 (0x41306000)
libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2
(0x41318000)
libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x4132b000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3
(0x41389000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3
(0x4139a000)
The problems appears to be this line:
libpango-1.0.so.0 => /usr/local/lib/pangopdf/libpango-1.0.so.0
(0x40dec000)
i.e. that clients of libpango (such as GTK) are being dynamically linked
to PangoPDF, rather than the "real" Pango, and die horribly (due to ABI
inconsistencies, I think)
I'm not an expert at managing dynamic libraries on Unix and similar
systems (I come from a Win32 and games console background); I believe
that PangoPDF needs to have some kind of renaming: probably of the
generated so file, and possibility of the symbols inside it (some kind
of automated shell script?)
Hope the above makes sense! Is there a simple fix I've missed? Is it
possible to statically link PangoPDF inside xmlroff without exporting
its symbols to fix the problem? (I don't know enough about "so" files to
implement this myself).
--
David Malcolm
www.conglomerate.org
|