Still problems with GPGME with multithread

Laurent Cheylus foxy@free.fr
Tue Apr 1 14:04:07 2003


Hi,

I am working with Albrecht Dress on GPG support for Balsa MUA (see his
message on gnupg-devel list posted the 03/03/27).

I have also problems with GPGME 0.3.15 in a multithread app (Balsa)  On
a Mandrake 8.2 (Linux distribution) with glib 2.2.4 and gcc 2.96, after
a call to 'gpgme_op_verify', my app hangs.

gdb output is :

(gdb) bt
#0  0x401b7344 in read () from /lib/libc.so.6
#1  0x410408d8 in __DTOR_END__ () from /usr/local/lib/libgpgme.so.6
#2  0x4103b5e0 in _gpgme_io_read (fd=23, buffer=0xbffff340, count=79) at
posix-io.c:56
#3  0x4103d19d in _gpgme_get_program_version (path=0x4103ec47
"/usr/bin/gpg") at version.c:248
#4  0x4103819d in _gpgme_gpg_get_version () at rungpg.c:229
#5  0x41037555 in _gpgme_engine_get_version
(proto=GPGME_PROTOCOL_OpenPGP) at engine.c:78
#6  0x410377a2 in _gpgme_engine_new (proto=GPGME_PROTOCOL_OpenPGP,
r_engine=0x824ef5c)
    at engine.c:172
#7  0x41030cd8 in _gpgme_op_reset (ctx=0x824ef48, type=1) at
op-support.c:44
#8  0x410322b4 in _gpgme_op_verify_start (ctx=0x824ef48, synchronous=1,
sig=0x824f038, 
    text=0x824f000) at verify.c:372
#9  0x41032442 in gpgme_op_verify (ctx=0x824ef48, sig=0x824f038,
text=0x824f000, r_stat=0xbffff4f0)
    at verify.c:485
#10 0x080b3a8d in libbalsa_gpg_sign_verify [...]

I test to modify the link order ('-lpthread' before '-lgpgme' at
compilation) as described in a precedent thread (Albrecht's solution).
But for me, it doesn't solve the issue :-(

ldd output is :

fox@teapot:~/balsa-1.4.2-devel> ldd src/balsa
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x40024000)
	libpspell.so.4 => /usr/lib/libpspell.so.4 (0x40051000)
	libltdl.so.3 => /usr/lib/libltdl.so.3 (0x40074000)
	libpspell-modules.so.1 => /usr/lib/libpspell-modules.so.1 (0x4007c000)
	libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3
(0x4007e000)
	libesmtp.so.5 => /usr/lib/libesmtp.so.5 (0x400cb000)
	libc.so.6 => /lib/libc.so.6 (0x400d9000)
	libgnomevfs.so.0 => /usr/lib/libgnomevfs.so.0 (0x40215000)
	libssl.so.0 => /usr/lib/libssl.so.0 (0x40248000)
	libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0x40276000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x40331000)
	librt.so.1 => /lib/librt.so.1 (0x40347000)
	libgthread-1.2.so.0 => /usr/lib/libgthread-1.2.so.0 (0x40358000)
	libgtkhtml.so.20 => /usr/lib/libgtkhtml.so.20 (0x4035b000)
	libbonobo.so.2 => /usr/lib/libbonobo.so.2 (0x403e2000)
	libbonobox.so.2 => /usr/lib/libbonobox.so.2 (0x40446000)
	libgal.so.19 => /usr/lib/libgal.so.19 (0x404a6000)
	libgnomeprint.so.15 => /usr/lib/libgnomeprint.so.15 (0x405a7000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40a13000)
	libglade-gnome.so.0 => /usr/lib/libglade-gnome.so.0 (0x40a54000)
	libglade.so.0 => /usr/lib/libglade.so.0 (0x40a64000)
	libxml.so.1 => /usr/lib/libxml.so.1 (0x40a7e000)
	libz.so.1 => /lib/libz.so.1 (0x40b08000)
	libgdk_pixbuf.so.2 => /usr/lib/libgdk_pixbuf.so.2 (0x40b17000)
	libgnomecanvaspixbuf.so.1 => /usr/lib/libgnomecanvaspixbuf.so.1
(0x40b2d000)
	libgnomeui.so.32 => /usr/lib/libgnomeui.so.32 (0x40b31000)
	libart_lgpl.so.2 => /usr/lib/libart_lgpl.so.2 (0x40c18000)
	libgdk_imlib.so.1 => /usr/lib/libgdk_imlib.so.1 (0x40c2a000)
	libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40c51000)
	libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40c5a000)
	libgnome.so.32 => /usr/lib/libgnome.so.32 (0x40c71000)
	libgnomesupport.so.0 => /usr/lib/libgnomesupport.so.0 (0x40c8a000)
	libesd.so.0 => /usr/lib/libesd.so.0 (0x40c8f000)
	libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x40c97000)
	libdb.so.2 => /usr/lib/libdb.so.2 (0x40cbb000)
	libgconf-gtk-1.so.1 => /usr/lib/libgconf-gtk-1.so.1 (0x40cc9000)
	libgconf-1.so.1 => /usr/lib/libgconf-1.so.1 (0x40cd0000)
	liboaf.so.0 => /usr/lib/liboaf.so.0 (0x40d0a000)
	libpopt.so.0 => /lib/libpopt.so.0 (0x40d23000)
	libORBitCosNaming.so.0 => /usr/lib/libORBitCosNaming.so.0 (0x40d2b000)
	libORBit.so.0 => /usr/lib/libORBit.so.0 (0x40d33000)
	libIIOP.so.0 => /usr/lib/libIIOP.so.0 (0x40d6e000)
	libORBitutil.so.0 => /usr/lib/libORBitutil.so.0 (0x40d7d000)
	libgtk-1.2.so.0 => /usr/lib/libgtk-1.2.so.0 (0x40d7f000)
	libgdk-1.2.so.0 => /usr/lib/libgdk-1.2.so.0 (0x40ec2000)
	libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 (0x40efc000)
	libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x40eff000)
	libdl.so.2 => /lib/libdl.so.2 (0x40f25000)
	libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40f28000)
	libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40f30000)
	libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40f3f000)
	libm.so.6 => /lib/libm.so.6 (0x41007000)
	libgpgme.so.6 => /usr/local/lib/libgpgme.so.6 (0x41029000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Can you help to solve this problem or give some clues to do a better
analysis of this bug ?

Thx, Foxy.

-- 
Laurent Cheylus <foxy@free.fr> OpenPGP ID 0x5B766EC2