Daniel Veillard wrote:
On Wed, Mar 06, 2002 at 01:07:54PM +0100, MDC A. wrote:xmlParserError(0x160840, 0x122cf0, 0x1646c8, 0x0, 0x0, 0x164afd)xmlParserError calls the xmlGenericError routine which is initialized to xmlGenericErrorDefaultFunc, with the default xmlGenericErrorContext which is initialized to NULL.xmlGenericErrorDefaultFunc(0x0, 0x12fcf8, 0x5, 0xfffffff8, 0x44, 0x1646b8)So that call is correct. BUT xmlGenericErrorDefaultFunc() code is:--------------- void xmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { va_list args; if (xmlGenericErrorContext == NULL) xmlGenericErrorContext = (void *) stderr; va_start(args, msg); vfprintf((FILE *)xmlGenericErrorContext, msg, args); va_end(args); } --------------- Unless stderr == NULL in Solaris which would be really really strange,vfprintf(0x0, 0xffbef0e4, 0xfeabf9b4, 0x8, 0x12fcf8, 0x1646c8)I really don't see how the first argument to vfprintf being passed can be NULL !which is the problem here?I really don't know there is something really really strange here !How can the problem be solved?Take a debugger and check by single stepping, possibly looking at the assembly generated. I don't understand how the first argument of the call can be NULL ! Or someone else on Solaris can reproduce your problem and check it for you, sorry I can't ... Daniel
Hi,To cut a long story short, I think this is a problem to do with the configure script. The linkage to -lpthread wasn't specified and so if your application was single threaded and you built libxml2 for multi-threaded use, failures of this nature would be caused.
This was fixed before I reported it, but I think that it was only fixed in 2.4.16.
You can check by seeing if libxml2.so is linked to -lpthread, e.g.:
bash-2.03$ ldd /usr/local/libxml/sparc/lib/libxml2.so
libpthread.so.1 => /usr/lib/libpthread.so.1
libz.so.1 => /usr/lib/libz.so.1
libm.so.1 => /usr/lib/libm.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libmp.so.2 => /usr/lib/libmp.so.2
libthread.so.1 => /usr/lib/libthread.so.1
/usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
bash-2.03$
If it isn't linked to -lpthread, then it's broken for use with single
threaded apps.
The easy answer is to upgrade your version of libxml2 to use the latest set of binaries that I ship from http://garypennington.net/libxml2/. Alternatively, if you use an older version of Solaris, download the source for 2.4.16 and build it.
Gary -- Gary Pennington Solaris Kernel Development, Sun Microsystems Gary Pennington sun com