You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org> on 2008/06/11 22:24:45 UTC

[jira] Commented: (XERCESC-1809) seg fault on 64bit

    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604327#action_12604327 ] 

Boris Kolpackov commented on XERCESC-1809:
------------------------------------------

Guido, can you try to run some of the Xerces-C++ examples or better yet the test suite that comes with Xerces-C++ (see scripts/sanityTest.pl)? Right now you are testing Xerces-C++/XQilla/DBXML combo and it is not clear which part is causing the problem. Since Xerces-C++ 2.8.0 is know to work on 64-bit Linux, I suspect there is something specific to this combination in which case you better ask for help on XQilla and/or DBXML mailing lists.

> seg fault on 64bit
> ------------------
>
>                 Key: XERCESC-1809
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1809
>             Project: Xerces-C++
>          Issue Type: Bug
>    Affects Versions: 2.8.0
>         Environment: Gentoo-Linux (emerge --version -> Portage 2.1.4.4 (default-linux/amd64/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.21-gentoo-r4 x86_64))
>            Reporter: Guido Jäkel
>
> I try to advance the Gentoo ebuild for dbxml to 2.4.13. For that, Xerces-C 2.8.0 and XQuilla is a prerequesite. The Gentoo ebuild for Xerces-C have been tweeked to include the patches for XQilla this days. Now i'm able to build dbxml on 32bit and 64bit. On 32bit it seems to work from the first tests, but on 64bit even a simple "dbxml -v" dies with an segmentation fault.
> With gdb, i got the following stack trace:
> #0 0x00002abcb1fe6c2c in ?? () from /lib/libc.so.6
> #1 0x00002abcb14f5de0 in xercesc_2_8::XMLString::parseInt () from /usr/lib/libxerces-c.so.28
> #2 0x00002abcb13b3bbd in xercesc_2_8::AbstractStringValidator::assignFacet () from /usr/lib/libxerces-c.so.28
> #3 0x00002abcb13b411d in xercesc_2_8::AbstractStringValidator::init () from /usr/lib/libxerces-c.so.28
> #4 0x00002abcb144cfe0 in xercesc_2_8::ListDatatypeValidator::ListDatatypeValidator () from /usr/lib/libxerces-c.so.28
> #5 0x00002abcb141837e in xercesc_2_8::DatatypeValidatorFactory::createDatatypeValidator () from /usr/lib/libxerces-c.so.28
> #6 0x00002abcb14198f9 in xercesc_2_8::DatatypeValidatorFactory::expandRegistryToFullSchemaSet ()
> from /usr/lib/libxerces-c.so.28
> #7 0x00002abcb097e733 in XQillaPlatformUtils::initialize () from /usr/lib/libxqilla.so.4
> #8 0x00002abcb00d9fff in DbXml::Globals::initializeXmlPlatform () from /usr/lib/libdbxml-2.4.so
> #9 0x00002abcb00da53f in DbXml::Globals::initialize () from /usr/lib/libdbxml-2.4.so
> #10 0x00002abcb00df043 in DbXml::Manager::Manager () from /usr/lib/libdbxml-2.4.so
> #11 0x00002abcb00d8fca in DbXml::XmlManager::XmlManager () from /usr/lib/libdbxml-2.4.so
> #12 0x000000000040c259 in ?? ()
> #13 0x00002abcb1fd0b74 in __libc_start_main () from /lib/libc.so.6
> #14 0x000000000040ba39 in ?? ()
> #15 0x00007ffffad47148 in ?? ()
> #16 0x0000000000000000 in ?? ()
> From that, i *guess* that it break's HERE, because this looks like a libc-call to me.
> .../xerces-c-src/src/xercesc/util/XMLString.cpp:
> int XMLString::parseInt(const XMLCh* const toConvert
>                      , MemoryManager* const manager)
> {
>     // If no string, or empty string, then it is a failure
>     if ((!toConvert) || (!*toConvert))
>         ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, manager);
>         XMLCh* trimmedStr = XMLString::replicate(toConvert, manager);
>         ArrayJanitor<XMLCh> jan1(trimmedStr, manager);
>         XMLString::trim(trimmedStr);
>     unsigned int trimmedStrLen = XMLString::stringLen(trimmedStr);
>         if ( !trimmedStrLen )
>         ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, manager);
>         //the errno set by previous run is NOT automatically cleared
>         errno = 0;
>         char *nptr = XMLString::transcode(trimmedStr, manager);
>     ArrayJanitor<char> jan2(nptr, manager);
>     char *endptr;
>     long retVal = strtol(nptr, &endptr, 10);     <-----[HERE]
>         // check if all chars are valid char
>         if ( (endptr - nptr) != (int) trimmedStrLen)
>                 ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager);
>         // check if overflow/underflow occurs
>     if (errno == ERANGE)
>         ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::Str_ConvertOverflow, manager);
>          //
>      // REVISIT: conversion of (long) to (int)
>          //          may truncate value on IA64
>         return (int) retVal;
> }
> May please anybody give me a hint how to get it running on 64bit? Feel free to ask for further information you'll need,
> thank you
> Guido

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org