[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#617759: icedove: symbol lookup error: /usr/lib/icedove/components/libdbusservice.so: undefined symbol: NS_Alloc



tags 617759 - moreinfo
quit

Jonathan Nieder wrote:

>  $ icedove; echo $?
>  /usr/lib/icedove/icedove-bin: symbol lookup error: /usr/lib/icedove/components/libdbusservice.so: undefined symbol: NS_Alloc
>  127

I tried reproducing this with upstream glibc.  I'm way too lazy to
rebuild icedove in a sysroot, so that meant:

	git checkout 9f94d2ea
	cd ..
	mkdir glibc-build
	cd glibc-build
	../glibc/configure --prefix=$HOME/opt/glibc
	make install

In a root shell, kept open for safety:

	cd ~jrn/src/glibc-build
	cp -dp /lib/ld-linux-x86-64.so.2 ld-linux-x86-64.so.2.backup
	ln -sf $(pwd)/elf/ld.so /lib/ld-linux-x64-64.so.2

As an ordinary user:

	LD_LIBRARY_PATH=$HOME/opt/glibc:/usr/local/lib:/usr/lib:/lib
	export LD_LIBRARY_PATH
	icedove

Worked great --- icedove opened without trouble.  So probably either
the bug is caused by a Debian or eglibc patch, or it is related to
ld.so.cache.  Next step will be to try the patched source.

A less puzzling finding: LD_BIND_NOW avoids trouble, too.

The icedove source says

	/**
	 * Static helper routines to manage memory. These routines allow easy access
	 * to xpcom's built-in (global) nsIMemory implementation, without needing
	 * to go through the service manager to get it. However this requires clients
	 * to link with the xpcom DLL.
	 *
	 * This class is not threadsafe and is intented for use only on the main
	 * thread.
	 */

Maybe the warning is relevant?  But this does not feel like a race
(especially with a narrow window like that between the following "if"
and "return")

	if (!xpcomFunctions.allocFunc)
	    return nsnull;
	return xpcomFunctions.allocFunc(size);

since the result of running icedove is the same every time.



Reply to: