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 "Guido Jäkel (JIRA)" <xe...@xml.apache.org> on 2008/06/10 12:46:44 UTC

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

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:

{code}
#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 ?? ()
{code}

>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:

{code}
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;
}
{code}


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


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

Posted by "John Snelson (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604514#action_12604514 ] 

John Snelson commented on XERCESC-1809:
---------------------------------------

Hi Boris,

This definitely looks like a 64bit Xerces-C bug - DB XML is not significant in the stack trace, and the relevant XQilla code looks like this:

    DatatypeValidatorFactory dvf;
    dvf.expandRegistryToFullSchemaSet();

John

> 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


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

Posted by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12606316#action_12606316 ] 

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

This is probably related to https://issues.apache.org/jira/browse/XERCESC-1586 and is fixed in the 3.0.0 codebase (you can try the beta:
http://marc.info/?l=xerces-c-users&m=120541881312475&w=2 )



> 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
>             Fix For: 2.9.0
>
>
> 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


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

Posted by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12605952#action_12605952 ] 

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

Guido,

Thanks for the info and sorry for the delay in replying. Looking at your strace I see that Xerces-C++ tries to open XercesMessages_en_US.cat which means it was built with iconv message loader (aka MsgCatalog). I remember seeing a couple of bug reports about iconv not working on 64bit systems. Can you confirm that you are using iconv (e.g., maybe post your runConfigure command line)?

Boris


> 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


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

Posted by "Guido Jäkel (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12606276#action_12606276 ] 

Guido Jäkel commented on XERCESC-1809:
--------------------------------------

Dear Boris,

Yes, it was compiled with iconv support. This is easy switchable in the Gentoo ebuild via a USE-flag "iconv". I let build Xerces-C++ without it. And now, the dbxml cli starts working !!!

What did i lost with the iconv: Just language support for error messages? And which is the bugtracker to approach with the issue, now? In former times, there was a seperate libiconv, but now it seems to be a part of libc, right?

Thank you a lot, so far.

Guido
-----------
root@leo2 /var/tmp/portage # dbxml

dbxml> quit
root@leo2 /var/tmp/portage # strace dbxml
execve("/usr/bin/dbxml", ["dbxml"], [/* 35 vars */]) = 0
brk(0)                                  = 0x651000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4024c8000
uname({sys="Linux", node="leo2", ...})  = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/x86_64/libdbxml-2.4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls/x86_64", 0x7fffa85f8eb0) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libdbxml-2.4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls", 0x7fffa85f8eb0)    = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64/libdbxml-2.4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64", 0x7fffa85f8eb0) = -1 ENOENT (No such file or directory)
open("/usr/lib/libdbxml-2.4.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\277\16\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2914080, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4024c9000
mmap(NULL, 5010512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4026c9000
mprotect(0x2ad402978000, 2097152, PROT_NONE) = 0
mmap(0x2ad402b78000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2af000) = 0x2ad402b78000
mmap(0x2ad402b90000, 1104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad402b90000
close(3)                                = 0
open("/usr/lib/libdb_cxx-4.6.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20K\3\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1384472, ...}) = 0
mmap(NULL, 3480608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad402b91000
mprotect(0x2ad402cdd000, 2093056, PROT_NONE) = 0
mmap(0x2ad402edc000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14b000) = 0x2ad402edc000
close(3)                                = 0
open("/usr/lib/libxqilla.so.4", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220h\30\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=4521696, ...}) = 0
mmap(NULL, 6620728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad402ee3000
mprotect(0x2ad4032cb000, 2097152, PROT_NONE) = 0
mmap(0x2ad4034cb000, 425984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3e8000) = 0x2ad4034cb000
mmap(0x2ad403533000, 1592, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad403533000
close(3)                                = 0
open("/usr/lib/libnsl.so.1", O_RDONLY)  = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24304, ...}) = 0
mmap(NULL, 24304, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2ad403534000
close(3)                                = 0
open("/lib/libnsl.so.1", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@A\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=84800, ...}) = 0
mmap(NULL, 2190032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad40353a000
mprotect(0x2ad40354e000, 2093056, PROT_NONE) = 0
mmap(0x2ad40374d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x2ad40374d000
mmap(0x2ad40374f000, 6864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad40374f000
close(3)                                = 0
open("/usr/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260W\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=131577, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad403751000
mmap(NULL, 2204528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad403752000
mprotect(0x2ad403767000, 2097152, PROT_NONE) = 0
mmap(0x2ad403967000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x2ad403967000
mmap(0x2ad403969000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad403969000
close(3)                                = 0
open("/usr/lib/libxerces-c.so.28", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`t\30\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=4389840, ...}) = 0
mmap(NULL, 6488504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad40396d000
mprotect(0x2ad403d59000, 2093056, PROT_NONE) = 0
mmap(0x2ad403f58000, 282624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3eb000) = 0x2ad403f58000
mmap(0x2ad403f9d000, 440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad403f9d000
close(3)                                = 0
open("/usr/lib/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@6\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=985888, ...}) = 0
mmap(NULL, 3157792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad403f9e000
mprotect(0x2ad404086000, 2097152, PROT_NONE) = 0
mmap(0x2ad404286000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x2ad404286000
mmap(0x2ad40428f000, 73504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad40428f000
close(3)                                = 0
open("/usr/lib/libm.so.6", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0?\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=526472, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4042a1000
mmap(NULL, 2621672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4042a2000
mprotect(0x2ad404322000, 2093056, PROT_NONE) = 0
mmap(0x2ad404521000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x2ad404521000
close(3)                                = 0
open("/usr/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\37\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=55400, ...}) = 0
mmap(NULL, 2151240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad404523000
mprotect(0x2ad404530000, 2093056, PROT_NONE) = 0
mmap(0x2ad40472f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x2ad40472f000
close(3)                                = 0
open("/usr/lib/libc.so.6", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\334\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1293456, ...}) = 0
mmap(NULL, 3399928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad404731000
mprotect(0x2ad404867000, 2093056, PROT_NONE) = 0
mmap(0x2ad404a66000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x135000) = 0x2ad404a66000
mmap(0x2ad404a6b000, 16632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad404a6b000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404a70000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404a71000
arch_prctl(ARCH_SET_FS, 0x2ad404a71780) = 0
mprotect(0x2ad404a66000, 16384, PROT_READ) = 0
mprotect(0x2ad40472f000, 4096, PROT_READ) = 0
mprotect(0x2ad404521000, 4096, PROT_READ) = 0
mprotect(0x2ad404286000, 28672, PROT_READ) = 0
mprotect(0x2ad403f58000, 110592, PROT_READ) = 0
mprotect(0x2ad403967000, 4096, PROT_READ) = 0
mprotect(0x2ad40374d000, 4096, PROT_READ) = 0
mprotect(0x2ad4034cb000, 319488, PROT_READ) = 0
mprotect(0x2ad402edc000, 16384, PROT_READ) = 0
mprotect(0x2ad402b78000, 77824, PROT_READ) = 0
mprotect(0x64d000, 12288, PROT_READ)    = 0
mprotect(0x2ad4026c7000, 4096, PROT_READ) = 0
munmap(0x2ad403534000, 24304)           = 0
set_tid_address(0x2ad404a71810)         = 6145
set_robust_list(0x2ad404a71820, 0x18)   = 0
rt_sigaction(SIGRTMIN, {0x2ad403757320, [], SA_RESTORER|SA_SIGINFO, 0x2ad40375fed0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x2ad4037573a0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x2ad40375fed0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x2ad404290c88, FUTEX_WAKE, 2147483647) = 0
brk(0)                                  = 0x651000
brk(0x672000)                           = 0x672000
rt_sigaction(SIGHUP, {0x43a1e0, [], SA_RESTORER, 0x2ad40375fed0}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGINT, {0x43a1e0, [], SA_RESTORER, 0x2ad40375fed0}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGPIPE, {0x43a1e0, [], SA_RESTORER, 0x2ad40375fed0}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x43a1e0, [], SA_RESTORER, 0x2ad40375fed0}, {SIG_DFL}, 8) = 0
open("DB_CONFIG", O_RDONLY)             = -1 ENOENT (No such file or directory)
stat("/var/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
open("__db.001", O_RDWR)                = -1 ENOENT (No such file or directory)
futex(0x2ad404730130, FUTEX_WAKE, 2147483647) = 0
open("DB_CONFIG", O_RDONLY)             = -1 ENOENT (No such file or directory)
open("/proc/stat", O_RDONLY)            = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad403534000
read(3, "cpu  699690 876 262718 759052992"..., 1024) = 1024
read(3, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 1024) = 1024
read(3, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 1024) = 874
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0x2ad403534000, 4096)            = 0
mmap(NULL, 1073152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404a72000
mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404b78000
brk(0x693000)                           = 0x693000
brk(0x6b4000)                           = 0x6b4000
brk(0x6d5000)                           = 0x6d5000
open("DB_CONFIG", O_RDONLY)             = -1 ENOENT (No such file or directory)
open("/proc/stat", O_RDONLY)            = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404bf8000
read(3, "cpu  699690 876 262718 759053090"..., 1024) = 1024
read(3, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 1024) = 1024
read(3, " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"..., 1024) = 874
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0x2ad404bf8000, 4096)            = 0
mmap(NULL, 1073152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404bf8000
mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404cfe000
open("/etc/localtime", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404d7e000
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 2295
lseek(3, -1458, SEEK_CUR)               = 837
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\t\0\0\0\0"..., 4096) = 1458
close(3)                                = 0
munmap(0x2ad404d7e000, 4096)            = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2295, ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404d7e000
write(1, "\n", 1
)                       = 1
write(1, "dbxml> ", 7dbxml> )                  = 7
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad404d7f000
read(0,  <unfinished ...>
***( manualy terminated by ^C)***

> 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


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

Posted by "Guido Jäkel (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604502#action_12604502 ] 

Guido Jäkel commented on XERCESC-1809:
--------------------------------------

Dear Boris,

... and the other will point me here, because it crashes in Xerces! Following your sugesstion, i have let build the Xerces test programms.

All from the test suite fails with an similar error. Here's the console printout of the first of the tested programs. Even StdInParse will fail with the same. This will fority that my problem with dbxml is cored here in Xerces-C.


And yes, this is the right path to the file - you'll see it from the following run through strace. May this help to find any hints to me?

thank you

Guido


-------------
root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/scripts # SAX2Count ../samples/data/personal.xml                              

Fatal Error at file , line 0, char 0
  Message:  An exception occurred! Type:RuntimeException, Message: The primary document entity could not be opened. Id=/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data/personal.xml

root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/scripts # strace SAX2Count ../samples/data/personal.xml                       
execve("/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0//bin/SAX2Count", ["SAX2Count", "../samples/data/personal.xml"...], [/* 37 vars */]) = 0
brk(0)                                  = 0x60a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afadfd48000
uname({sys="Linux", node="leo2", ...})  = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24304, ...}) = 0
mmap(NULL, 24304, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afadfd49000
close(3)                                = 0
open("/usr/lib/libxerces-c.so.28", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\207\30\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=4189264, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afadfd4f000
mmap(NULL, 6287960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afadff49000
mprotect(0x2afae0304000, 2093056, PROT_NONE) = 0
mmap(0x2afae0503000, 282624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3ba000) = 0x2afae0503000
mmap(0x2afae0548000, 600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2afae0548000
close(3)                                = 0
open("/lib/libpthread.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260W\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=131577, ...}) = 0
mmap(NULL, 2204528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae0549000
mprotect(0x2afae055e000, 2097152, PROT_NONE) = 0
mmap(0x2afae075e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x2afae075e000
mmap(0x2afae0760000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2afae0760000
close(3)                                = 0
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@6\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=985888, ...}) = 0
mmap(NULL, 3157792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae0764000
mprotect(0x2afae084c000, 2097152, PROT_NONE) = 0
mmap(0x2afae0a4c000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x2afae0a4c000
mmap(0x2afae0a55000, 73504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2afae0a55000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0?\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=526472, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afae0a67000
mmap(NULL, 2621672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae0a68000
mprotect(0x2afae0ae8000, 2093056, PROT_NONE) = 0
mmap(0x2afae0ce7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x2afae0ce7000
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\37\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=55400, ...}) = 0
mmap(NULL, 2151240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae0ce9000
mprotect(0x2afae0cf6000, 2093056, PROT_NONE) = 0
mmap(0x2afae0ef5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x2afae0ef5000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\334\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1293456, ...}) = 0
mmap(NULL, 3399928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae0ef7000
mprotect(0x2afae102d000, 2093056, PROT_NONE) = 0
mmap(0x2afae122c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x135000) = 0x2afae122c000
mmap(0x2afae1231000, 16632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2afae1231000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afae1236000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2afae1237000
arch_prctl(ARCH_SET_FS, 0x2afae12372f0) = 0
mprotect(0x2afae122c000, 16384, PROT_READ) = 0
mprotect(0x2afae0ef5000, 4096, PROT_READ) = 0
mprotect(0x2afae0ce7000, 4096, PROT_READ) = 0
mprotect(0x2afae0a4c000, 28672, PROT_READ) = 0
mprotect(0x2afae075e000, 4096, PROT_READ) = 0
mprotect(0x2afae0503000, 110592, PROT_READ) = 0
mprotect(0x608000, 4096, PROT_READ)     = 0
mprotect(0x2afadff47000, 4096, PROT_READ) = 0
munmap(0x2afadfd49000, 24304)           = 0
set_tid_address(0x2afae1237380)         = 1659
set_robust_list(0x2afae1237390, 0x18)   = 0
rt_sigaction(SIGRTMIN, {0x2afae054e320, [], SA_RESTORER|SA_SIGINFO, 0x2afae0556ed0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x2afae054e3a0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x2afae0556ed0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x2afae0a56c88, FUTEX_WAKE, 2147483647) = 0
brk(0)                                  = 0x60a000
brk(0x62b000)                           = 0x62b000
open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=25488, ...}) = 0
mmap(NULL, 25488, PROT_READ, MAP_SHARED, 3, 0) = 0x2afadfd50000
close(3)                                = 0
futex(0x2afae1230f18, FUTEX_WAKE, 2147483647) = 0
open("/usr/lib64/gconv/ISO8859-1.so", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\4\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=10104, ...}) = 0
mmap(NULL, 2105392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2afae1238000
mprotect(0x2afae123a000, 2093056, PROT_NONE) = 0
mmap(0x2afae1439000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x2afae1439000
close(3)                                = 0
mprotect(0x2afae1439000, 4096, PROT_READ) = 0
getcwd("/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/scripts", 4097) = 73
open(NULL, O_RDONLY)                    = -1 EFAULT (Bad address)
open("/usr/share/xerces-c/msg/XercesMessages_en_US.cat", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=74035, ...}) = 0
mmap(NULL, 74035, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afae143b000
close(3)                                = 0
futex(0x2afae0ef6130, FUTEX_WAKE, 2147483647) = 0
open("/usr/share/xerces-c/msg/XercesMessages_en_US.cat", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=74035, ...}) = 0
mmap(NULL, 74035, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2afae144e000
close(3)                                = 0
write(2, "\nFatal Error at file ", 21
Fatal Error at file )  = 21
write(2, ", line ", 7, line )                  = 7
write(2, "0", 10)                        = 1
write(2, ", char ", 7, char )                  = 7
write(2, "0", 10)                        = 1
write(2, "\n  Message: ", 12
  Message: )           = 12
write(2, " An exception occurred! Type:Run"..., 198 An exception occurred! Type:RuntimeException, Message: The primary document entity could not be opened. Id=/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data/personal.xml) = 198
write(2, "\n", 1
)                       = 1
munmap(0x2afae144e000, 74035)           = 0
munmap(0x2afae143b000, 74035)           = 0
exit_group(4)                           = ?
root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/scripts #
-----------------

> 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


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

Posted by "Guido Jäkel (JIRA)" <xe...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12606277#action_12606277 ] 

Guido Jäkel commented on XERCESC-1809:
--------------------------------------

Dear Boris,

for completeness, i let build the Xerces-C samples, too. As expected, now they are roughly running. 

To compare with the above, here the current strace of SAX2Count.

Guido

------------
root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data # ../../bin/SAX2Count personal.xml                                                                                       
personal.xml: 1 ms (37 elems, 12 attrs, 134 spaces, 134 chars)
root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data # strace ../../bin/SAX2Count personal.xml                                                                                
execve("../../bin/SAX2Count", ["../../bin/SAX2Count", "personal.xml"], [/* 36 vars */]) = 0
brk(0)                                  = 0x60a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e203f000
uname({sys="Linux", node="leo2", ...})  = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=24304, ...}) = 0
mmap(NULL, 24304, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2ad4e2040000
close(3)                                = 0
open("/usr/lib/libxerces-c.so.28", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`t\30\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=4389840, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2046000
mmap(NULL, 6488504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e2240000
mprotect(0x2ad4e262c000, 2093056, PROT_NONE) = 0
mmap(0x2ad4e282b000, 282624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3eb000) = 0x2ad4e282b000
mmap(0x2ad4e2870000, 440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2870000
close(3)                                = 0
open("/lib/libpthread.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260W\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=131577, ...}) = 0
mmap(NULL, 2204528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e2871000
mprotect(0x2ad4e2886000, 2097152, PROT_NONE) = 0
mmap(0x2ad4e2a86000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x2ad4e2a86000
mmap(0x2ad4e2a88000, 13168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2a88000
close(3)                                = 0
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@6\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=985888, ...}) = 0
mmap(NULL, 3157792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e2a8c000
mprotect(0x2ad4e2b74000, 2097152, PROT_NONE) = 0
mmap(0x2ad4e2d74000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x2ad4e2d74000
mmap(0x2ad4e2d7d000, 73504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2d7d000
close(3)                                = 0
open("/lib/libm.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0?\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=526472, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2d8f000
mmap(NULL, 2621672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e2d90000
mprotect(0x2ad4e2e10000, 2093056, PROT_NONE) = 0
mmap(0x2ad4e300f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x2ad4e300f000
close(3)                                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\37\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=55400, ...}) = 0
mmap(NULL, 2151240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e3011000
mprotect(0x2ad4e301e000, 2093056, PROT_NONE) = 0
mmap(0x2ad4e321d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x2ad4e321d000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\334\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1293456, ...}) = 0
mmap(NULL, 3399928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2ad4e321f000
mprotect(0x2ad4e3355000, 2093056, PROT_NONE) = 0
mmap(0x2ad4e3554000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x135000) = 0x2ad4e3554000
mmap(0x2ad4e3559000, 16632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ad4e3559000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e355e000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e355f000
arch_prctl(ARCH_SET_FS, 0x2ad4e355f2f0) = 0
mprotect(0x2ad4e3554000, 16384, PROT_READ) = 0
mprotect(0x2ad4e321d000, 4096, PROT_READ) = 0
mprotect(0x2ad4e300f000, 4096, PROT_READ) = 0
mprotect(0x2ad4e2d74000, 28672, PROT_READ) = 0
mprotect(0x2ad4e2a86000, 4096, PROT_READ) = 0
mprotect(0x2ad4e282b000, 110592, PROT_READ) = 0
mprotect(0x608000, 4096, PROT_READ)     = 0
mprotect(0x2ad4e223e000, 4096, PROT_READ) = 0
munmap(0x2ad4e2040000, 24304)           = 0
set_tid_address(0x2ad4e355f380)         = 15026
set_robust_list(0x2ad4e355f390, 0x18)   = 0
rt_sigaction(SIGRTMIN, {0x2ad4e2876320, [], SA_RESTORER|SA_SIGINFO, 0x2ad4e287eed0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x2ad4e28763a0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x2ad4e287eed0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
futex(0x2ad4e2d7ec88, FUTEX_WAKE, 2147483647) = 0
brk(0)                                  = 0x60a000
brk(0x62b000)                           = 0x62b000
getcwd("/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data", 4097) = 78
open("/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data/personal.xml", O_RDONLY) = 3
mmap(NULL, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2047000
fstat(3, {st_mode=S_IFREG|0644, st_size=1172, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2070000
read(3, "<?xml version=\"1.0\" encoding=\"is"..., 49152) = 1172
read(3, "", 45056)                      = 0
open("/var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data/personal.dtd", O_RDONLY) = 4
mmap(NULL, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2071000
fstat(4, {st_mode=S_IFREG|0644, st_size=433, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e209a000
read(4, "<?xml encoding=\"ISO-8859-1\"?>\n\n<"..., 49152) = 433
read(4, "", 45056)                      = 0
read(4, "", 49152)                      = 0
close(4)                                = 0
munmap(0x2ad4e209a000, 4096)            = 0
munmap(0x2ad4e2071000, 167936)          = 0
futex(0x2ad4e321e130, FUTEX_WAKE, 2147483647) = 0
read(3, "", 49152)                      = 0
close(3)                                = 0
munmap(0x2ad4e2070000, 4096)            = 0
munmap(0x2ad4e2047000, 167936)          = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad4e2047000
write(1, "personal.xml: 2 ms (37 elems, 12"..., 63personal.xml: 2 ms (37 elems, 12 attrs, 134 spaces, 134 chars)
) = 63
exit_group(0)                           = ?
root@leo2 /var/tmp/portage/dev-libs/xerces-c-2.8.0/work/xerces-c-src_2_8_0/samples/data # 

> 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


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

Posted by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Boris Kolpackov closed XERCESC-1809.
------------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 2.9.0)
                   3.0.1

Presumably fixed in 3.0.1.

> 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
>             Fix For: 3.0.1
>
>
> 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


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

Posted by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Boris Kolpackov updated XERCESC-1809:
-------------------------------------

    Fix Version/s: 2.9.0

> 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
>             Fix For: 2.9.0
>
>
> 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


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

Posted by "Guido Jäkel (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESC-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guido Jäkel updated XERCESC-1809:
---------------------------------

    Description: 
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

  was:
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:

{code}
#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 ?? ()
{code}

>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:

{code}
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;
}
{code}


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


> 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


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

Posted by "Boris Kolpackov (JIRA)" <xe...@xml.apache.org>.
    [ 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