You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by Vitaly Prapirny <ma...@mebius.net> on 2016/10/04 07:10:31 UTC

Re: xerces openwrt rpi zero

Hi Benjamin,

Seems like XMLSize_t type has been defined incorrectly on your platform.

Good luck!
    Vitaly

Benjamin DuPont wrote:
> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 3.1.2, 
> and 3.1.4 all with the same result.  I'm building with the following 
> arguments:
>
>     --disable-pretty-make \
>     --enable-transcoder-iconv \
>     --enable-netaccessor-socket \
>     --enable-msgloader-inmemory
>
> Here's the stack trace:
>
> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
> src/malloc/malloc.c:219
> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
> #2  0xb6c3aa30 in operator new(unsigned int) ()
>    from 
> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>
> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
> (this=<optimized out>,
>     size=<optimized out>) at xercesc/internal/MemoryManagerImpl.cpp:40
> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
> xercesc_3_1::StringHasher>::rehash (
>     this=this@entry=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:225
> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
> xercesc_3_1::StringHasher>::put (
>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
> <xercesc_3_1::gEncodingArray+15088>,
>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
> (this=this@entry=0xb6f88420)
>     at xercesc/util/EncodingValidator.cpp:79
> #7  0xb6db9b38 in xercesc_3_1::EncodingValidator::EncodingValidator 
> (this=0xb6f88420)
>     at xercesc/util/EncodingValidator.cpp:50
> #8  0xb6db9b5c in 
> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>     at xercesc/util/EncodingValidator.cpp:34
> #9  0xb6dd80fc in xercesc_3_1::XMLInitializer::initializeStaticData ()
>     at xercesc/util/XMLInitializer.cpp:44
> #10 0x000105c4 in main ()
>
>


Re: xerces openwrt rpi zero

Posted by Benjamin DuPont <be...@nebland.com>.
Vitaly, thanks for your help and sorry to bother.  This appears to be a 
bug in uClibc.

Ben


On 10/05/2016 01:34 AM, Vitaly Prapirny wrote:
> According to this new stack trace, xerces library tried to allocate 12 
> bytes
>
> #3  0xb6d57508 in xercesc_3_1::MemoryManagerImpl::allocate 
> (this=0x26f20, size=12)
>     at xercesc/internal/MemoryManagerImpl.cpp:40
>
> then c++ library called malloc to allocate 4294967295 bytes
>
> #1  0xb6fb2b30 in malloc (n=4294967295) at src/malloc/malloc.c:346
> #2  0xb6a76a30 in operator new(unsigned int) ()
>    from 
> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>
>
> and then received SIGSEGV inside malloc.c
>
> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42)
>     at src/malloc/malloc.c:219
>
> I see no pointers that the problem is in the xerces library.
>
> Good luck!
>    Vitaly
>
> Benjamin DuPont wrote:
>> I turned off optimizations so the parameters aren't hidden.  I don't 
>> think malloc is actually trying to allocate a max int memory block.
>>
>> Here's the new stack trace:
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42) at 
>> src/malloc/malloc.c:219
>> 219        c->next->prev = c->prev;
>> (gdb) bt
>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42)
>>     at src/malloc/malloc.c:219
>> #1  0xb6fb2b30 in malloc (n=4294967295) at src/malloc/malloc.c:346
>> #2  0xb6a76a30 in operator new(unsigned int) ()
>>    from 
>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6
>> #3  0xb6d57508 in xercesc_3_1::MemoryManagerImpl::allocate 
>> (this=0x26f20, size=12)
>>     at xercesc/internal/MemoryManagerImpl.cpp:40
>> #4  0xb6c3c9f4 in xercesc_3_1::ValueHashTableOf<bool, 
>> xercesc_3_1::StringHasher>::put (this=0xb6fff4a8, key=0xb6ea61f8 
>> <xercesc_3_1::gEncodingArray+14720>,
>>     valueToAdopt=@0xbefffdf3: true) at 
>> ./xercesc/util/ValueHashTableOf.c:203
>> #5  0xb6c3c1e0 in xercesc_3_1::EncodingValidator::initializeRegistry (
>>     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:79
>> #6  0xb6c3c054 in xercesc_3_1::EncodingValidator::EncodingValidator (
>>     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:50
>> #7  0xb6c3bf6c in 
>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>     at xercesc/util/EncodingValidator.cpp:35
>> #8  0xb6c7ff08 in xercesc_3_1::XMLInitializer::initializeStaticData ()
>>     at xercesc/util/XMLInitializer.cpp:44
>> #9  0xb6c3ec78 in xercesc_3_1::XMLPlatformUtils::Initialize (
>>     locale=0x21004 <xercesc_3_1::XMLUni::fgXercescDefaultLocale> 
>> "en_US",
>>     nlsHome=0x0, panicHandler=0x0, memoryManager=0x0)
>>     at xercesc/util/PlatformUtils.cpp:307
>> #10 0x00010858 in main ()
>>
>>
>> On 10/04/2016 09:56 AM, Vitaly Prapirny wrote:
>>> I know nothing about your platform. If I understand your stack trace 
>>> correctly, the library failed to allocate block of 4294967168 bytes.
>>>
>>> You can try to rebuild xerces with
>>> typedef unsigned long XMLSize_t;
>>>
>>> Or simply add debug output into the 'void ValueHashTableOf<TVal, 
>>> THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and 
>>> see why the library wants to allocate so huge block.
>>>
>>> Good luck!
>>>    Vitaly
>>>
>>> Benjamin DuPont wrote:
>>>> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to 
>>>> be defined as a size_t which is probably correct:
>>>>
>>>> #define XERCES_SIZE_T size_t
>>>>
>>>> typedef XERCES_SIZE_T                XMLSize_t;
>>>>
>>>> Ben
>>>>
>>>>
>>>> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>>>>> Hi Benjamin,
>>>>>
>>>>> Seems like XMLSize_t type has been defined incorrectly on your 
>>>>> platform.
>>>>>
>>>>> Good luck!
>>>>>    Vitaly
>>>>>
>>>>> Benjamin DuPont wrote:
>>>>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>>>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>>>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>>>>> following arguments:
>>>>>>
>>>>>>     --disable-pretty-make \
>>>>>>     --enable-transcoder-iconv \
>>>>>>     --enable-netaccessor-socket \
>>>>>>     --enable-msgloader-inmemory
>>>>>>
>>>>>> Here's the stack trace:
>>>>>>
>>>>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>>>>> src/malloc/malloc.c:219
>>>>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>>>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>>>>    from 
>>>>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>>>>
>>>>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>>>>> (this=<optimized out>,
>>>>>>     size=<optimized out>) at 
>>>>>> xercesc/internal/MemoryManagerImpl.cpp:40
>>>>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>>> xercesc_3_1::StringHasher>::rehash (
>>>>>>     this=this@entry=0xb6f88438) at 
>>>>>> ./xercesc/util/ValueHashTableOf.c:225
>>>>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>>> xercesc_3_1::StringHasher>::put (
>>>>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>>>>> <xercesc_3_1::gEncodingArray+15088>,
>>>>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>>>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>>>>> (this=this@entry=0xb6f88420)
>>>>>>     at xercesc/util/EncodingValidator.cpp:79
>>>>>> #7  0xb6db9b38 in 
>>>>>> xercesc_3_1::EncodingValidator::EncodingValidator (this=0xb6f88420)
>>>>>>     at xercesc/util/EncodingValidator.cpp:50
>>>>>> #8  0xb6db9b5c in 
>>>>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>>>>     at xercesc/util/EncodingValidator.cpp:34
>>>>>> #9  0xb6dd80fc in 
>>>>>> xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>>>>     at xercesc/util/XMLInitializer.cpp:44
>>>>>> #10 0x000105c4 in main ()
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
Ben DuPont
Owner/Operator
nebland software, LLC
ben@nebland.com | (920)328-5236
www.nebland.com


Re: xerces openwrt rpi zero

Posted by Vitaly Prapirny <ma...@mebius.net>.
According to this new stack trace, xerces library tried to allocate 12 bytes

#3  0xb6d57508 in xercesc_3_1::MemoryManagerImpl::allocate 
(this=0x26f20, size=12)
     at xercesc/internal/MemoryManagerImpl.cpp:40

then c++ library called malloc to allocate 4294967295 bytes

#1  0xb6fb2b30 in malloc (n=4294967295) at src/malloc/malloc.c:346
#2  0xb6a76a30 in operator new(unsigned int) ()
    from 
/home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 


and then received SIGSEGV inside malloc.c

#0  0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42)
     at src/malloc/malloc.c:219

I see no pointers that the problem is in the xerces library.

Good luck!
    Vitaly

Benjamin DuPont wrote:
> I turned off optimizations so the parameters aren't hidden.  I don't 
> think malloc is actually trying to allocate a max int memory block.
>
> Here's the new stack trace:
>
> Program received signal SIGSEGV, Segmentation fault.
> 0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42) at 
> src/malloc/malloc.c:219
> 219        c->next->prev = c->prev;
> (gdb) bt
> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42)
>     at src/malloc/malloc.c:219
> #1  0xb6fb2b30 in malloc (n=4294967295) at src/malloc/malloc.c:346
> #2  0xb6a76a30 in operator new(unsigned int) ()
>    from 
> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6
> #3  0xb6d57508 in xercesc_3_1::MemoryManagerImpl::allocate 
> (this=0x26f20, size=12)
>     at xercesc/internal/MemoryManagerImpl.cpp:40
> #4  0xb6c3c9f4 in xercesc_3_1::ValueHashTableOf<bool, 
> xercesc_3_1::StringHasher>::put (this=0xb6fff4a8, key=0xb6ea61f8 
> <xercesc_3_1::gEncodingArray+14720>,
>     valueToAdopt=@0xbefffdf3: true) at 
> ./xercesc/util/ValueHashTableOf.c:203
> #5  0xb6c3c1e0 in xercesc_3_1::EncodingValidator::initializeRegistry (
>     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:79
> #6  0xb6c3c054 in xercesc_3_1::EncodingValidator::EncodingValidator (
>     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:50
> #7  0xb6c3bf6c in 
> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>     at xercesc/util/EncodingValidator.cpp:35
> #8  0xb6c7ff08 in xercesc_3_1::XMLInitializer::initializeStaticData ()
>     at xercesc/util/XMLInitializer.cpp:44
> #9  0xb6c3ec78 in xercesc_3_1::XMLPlatformUtils::Initialize (
>     locale=0x21004 <xercesc_3_1::XMLUni::fgXercescDefaultLocale> "en_US",
>     nlsHome=0x0, panicHandler=0x0, memoryManager=0x0)
>     at xercesc/util/PlatformUtils.cpp:307
> #10 0x00010858 in main ()
>
>
> On 10/04/2016 09:56 AM, Vitaly Prapirny wrote:
>> I know nothing about your platform. If I understand your stack trace 
>> correctly, the library failed to allocate block of 4294967168 bytes.
>>
>> You can try to rebuild xerces with
>> typedef unsigned long XMLSize_t;
>>
>> Or simply add debug output into the 'void ValueHashTableOf<TVal, 
>> THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and 
>> see why the library wants to allocate so huge block.
>>
>> Good luck!
>>    Vitaly
>>
>> Benjamin DuPont wrote:
>>> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to 
>>> be defined as a size_t which is probably correct:
>>>
>>> #define XERCES_SIZE_T size_t
>>>
>>> typedef XERCES_SIZE_T                XMLSize_t;
>>>
>>> Ben
>>>
>>>
>>> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>>>> Hi Benjamin,
>>>>
>>>> Seems like XMLSize_t type has been defined incorrectly on your 
>>>> platform.
>>>>
>>>> Good luck!
>>>>    Vitaly
>>>>
>>>> Benjamin DuPont wrote:
>>>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>>>> following arguments:
>>>>>
>>>>>     --disable-pretty-make \
>>>>>     --enable-transcoder-iconv \
>>>>>     --enable-netaccessor-socket \
>>>>>     --enable-msgloader-inmemory
>>>>>
>>>>> Here's the stack trace:
>>>>>
>>>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>>>> src/malloc/malloc.c:219
>>>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>>>    from 
>>>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>>>
>>>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>>>> (this=<optimized out>,
>>>>>     size=<optimized out>) at 
>>>>> xercesc/internal/MemoryManagerImpl.cpp:40
>>>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>> xercesc_3_1::StringHasher>::rehash (
>>>>>     this=this@entry=0xb6f88438) at 
>>>>> ./xercesc/util/ValueHashTableOf.c:225
>>>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>> xercesc_3_1::StringHasher>::put (
>>>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>>>> <xercesc_3_1::gEncodingArray+15088>,
>>>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>>>> (this=this@entry=0xb6f88420)
>>>>>     at xercesc/util/EncodingValidator.cpp:79
>>>>> #7  0xb6db9b38 in 
>>>>> xercesc_3_1::EncodingValidator::EncodingValidator (this=0xb6f88420)
>>>>>     at xercesc/util/EncodingValidator.cpp:50
>>>>> #8  0xb6db9b5c in 
>>>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>>>     at xercesc/util/EncodingValidator.cpp:34
>>>>> #9  0xb6dd80fc in 
>>>>> xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>>>     at xercesc/util/XMLInitializer.cpp:44
>>>>> #10 0x000105c4 in main ()
>>>>>
>>>>>
>>>>
>>>
>>
>


Re: xerces openwrt rpi zero

Posted by Benjamin DuPont <be...@nebland.com>.
I turned off optimizations so the parameters aren't hidden.  I don't 
think malloc is actually trying to allocate a max int memory block.

Here's the new stack trace:

Program received signal SIGSEGV, Segmentation fault.
0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42) at 
src/malloc/malloc.c:219
219        c->next->prev = c->prev;
(gdb) bt
#0  0xb6fb1fc4 in unbin (c=c@entry=0xb69e9348, i=i@entry=42)
     at src/malloc/malloc.c:219
#1  0xb6fb2b30 in malloc (n=4294967295) at src/malloc/malloc.c:346
#2  0xb6a76a30 in operator new(unsigned int) ()
    from 
/home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6
#3  0xb6d57508 in xercesc_3_1::MemoryManagerImpl::allocate 
(this=0x26f20, size=12)
     at xercesc/internal/MemoryManagerImpl.cpp:40
#4  0xb6c3c9f4 in xercesc_3_1::ValueHashTableOf<bool, 
xercesc_3_1::StringHasher>::put (this=0xb6fff4a8, key=0xb6ea61f8 
<xercesc_3_1::gEncodingArray+14720>,
     valueToAdopt=@0xbefffdf3: true) at 
./xercesc/util/ValueHashTableOf.c:203
#5  0xb6c3c1e0 in xercesc_3_1::EncodingValidator::initializeRegistry (
     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:79
#6  0xb6c3c054 in xercesc_3_1::EncodingValidator::EncodingValidator (
     this=0xb6fff490) at xercesc/util/EncodingValidator.cpp:50
#7  0xb6c3bf6c in 
xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
     at xercesc/util/EncodingValidator.cpp:35
#8  0xb6c7ff08 in xercesc_3_1::XMLInitializer::initializeStaticData ()
     at xercesc/util/XMLInitializer.cpp:44
#9  0xb6c3ec78 in xercesc_3_1::XMLPlatformUtils::Initialize (
     locale=0x21004 <xercesc_3_1::XMLUni::fgXercescDefaultLocale> "en_US",
     nlsHome=0x0, panicHandler=0x0, memoryManager=0x0)
     at xercesc/util/PlatformUtils.cpp:307
#10 0x00010858 in main ()


On 10/04/2016 09:56 AM, Vitaly Prapirny wrote:
> I know nothing about your platform. If I understand your stack trace 
> correctly, the library failed to allocate block of 4294967168 bytes.
>
> You can try to rebuild xerces with
> typedef unsigned long XMLSize_t;
>
> Or simply add debug output into the 'void ValueHashTableOf<TVal, 
> THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and see 
> why the library wants to allocate so huge block.
>
> Good luck!
>    Vitaly
>
> Benjamin DuPont wrote:
>> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to be 
>> defined as a size_t which is probably correct:
>>
>> #define XERCES_SIZE_T size_t
>>
>> typedef XERCES_SIZE_T                XMLSize_t;
>>
>> Ben
>>
>>
>> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>>> Hi Benjamin,
>>>
>>> Seems like XMLSize_t type has been defined incorrectly on your 
>>> platform.
>>>
>>> Good luck!
>>>    Vitaly
>>>
>>> Benjamin DuPont wrote:
>>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>>> following arguments:
>>>>
>>>>     --disable-pretty-make \
>>>>     --enable-transcoder-iconv \
>>>>     --enable-netaccessor-socket \
>>>>     --enable-msgloader-inmemory
>>>>
>>>> Here's the stack trace:
>>>>
>>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>>> src/malloc/malloc.c:219
>>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>>    from 
>>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>>
>>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>>> (this=<optimized out>,
>>>>     size=<optimized out>) at xercesc/internal/MemoryManagerImpl.cpp:40
>>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>>> xercesc_3_1::StringHasher>::rehash (
>>>>     this=this@entry=0xb6f88438) at 
>>>> ./xercesc/util/ValueHashTableOf.c:225
>>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>>> xercesc_3_1::StringHasher>::put (
>>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>>> <xercesc_3_1::gEncodingArray+15088>,
>>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>>> (this=this@entry=0xb6f88420)
>>>>     at xercesc/util/EncodingValidator.cpp:79
>>>> #7  0xb6db9b38 in xercesc_3_1::EncodingValidator::EncodingValidator 
>>>> (this=0xb6f88420)
>>>>     at xercesc/util/EncodingValidator.cpp:50
>>>> #8  0xb6db9b5c in 
>>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>>     at xercesc/util/EncodingValidator.cpp:34
>>>> #9  0xb6dd80fc in xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>>     at xercesc/util/XMLInitializer.cpp:44
>>>> #10 0x000105c4 in main ()
>>>>
>>>>
>>>
>>
>

-- 
Ben DuPont
Owner/Operator
nebland software, LLC
ben@nebland.com | (920)328-5236
www.nebland.com


Re: xerces openwrt rpi zero

Posted by Vitaly Prapirny <ma...@mebius.net>.
Memory allocated at line 228 will be used to store pointers to 
ValueHashTableBucketElem<TVal>, not the values of TVal type. It's not 
allocating more space than needed.

Good luck!
    Vitaly

Benjamin DuPont wrote:
> I added a debug print as you suggested to see how much memory it's 
> trying to allocate.  Here's the output:
>
> newmod: 219
> newmod: 439
> Segmentation fault
>
> Line 228 looks suspicious: newMod * 
> sizeof(ValueHashTableBucketElem<TVal>*)
>
> TVal is of type bool which is 1 byte, but it's allocating for the size 
> of a pointer which is 4 bytes.  That would mean it's allocating more 
> space than needed though, not less.
>
> Ben
>
> On 10/04/2016 09:56 AM, Vitaly Prapirny wrote:
>> I know nothing about your platform. If I understand your stack trace 
>> correctly, the library failed to allocate block of 4294967168 bytes.
>>
>> You can try to rebuild xerces with
>> typedef unsigned long XMLSize_t;
>>
>> Or simply add debug output into the 'void ValueHashTableOf<TVal, 
>> THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and 
>> see why the library wants to allocate so huge block.
>>
>> Good luck!
>>    Vitaly
>>
>> Benjamin DuPont wrote:
>>> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to 
>>> be defined as a size_t which is probably correct:
>>>
>>> #define XERCES_SIZE_T size_t
>>>
>>> typedef XERCES_SIZE_T                XMLSize_t;
>>>
>>> Ben
>>>
>>>
>>> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>>>> Hi Benjamin,
>>>>
>>>> Seems like XMLSize_t type has been defined incorrectly on your 
>>>> platform.
>>>>
>>>> Good luck!
>>>>    Vitaly
>>>>
>>>> Benjamin DuPont wrote:
>>>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>>>> following arguments:
>>>>>
>>>>>     --disable-pretty-make \
>>>>>     --enable-transcoder-iconv \
>>>>>     --enable-netaccessor-socket \
>>>>>     --enable-msgloader-inmemory
>>>>>
>>>>> Here's the stack trace:
>>>>>
>>>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>>>> src/malloc/malloc.c:219
>>>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>>>    from 
>>>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>>>
>>>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>>>> (this=<optimized out>,
>>>>>     size=<optimized out>) at 
>>>>> xercesc/internal/MemoryManagerImpl.cpp:40
>>>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>> xercesc_3_1::StringHasher>::rehash (
>>>>>     this=this@entry=0xb6f88438) at 
>>>>> ./xercesc/util/ValueHashTableOf.c:225
>>>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>>>> xercesc_3_1::StringHasher>::put (
>>>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>>>> <xercesc_3_1::gEncodingArray+15088>,
>>>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>>>> (this=this@entry=0xb6f88420)
>>>>>     at xercesc/util/EncodingValidator.cpp:79
>>>>> #7  0xb6db9b38 in 
>>>>> xercesc_3_1::EncodingValidator::EncodingValidator (this=0xb6f88420)
>>>>>     at xercesc/util/EncodingValidator.cpp:50
>>>>> #8  0xb6db9b5c in 
>>>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>>>     at xercesc/util/EncodingValidator.cpp:34
>>>>> #9  0xb6dd80fc in 
>>>>> xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>>>     at xercesc/util/XMLInitializer.cpp:44
>>>>> #10 0x000105c4 in main ()
>>>>>
>>>>>
>>>>
>>>
>>
>


Re: xerces openwrt rpi zero

Posted by Benjamin DuPont <be...@nebland.com>.
I added a debug print as you suggested to see how much memory it's 
trying to allocate.  Here's the output:

newmod: 219
newmod: 439
Segmentation fault

Line 228 looks suspicious: newMod * sizeof(ValueHashTableBucketElem<TVal>*)

TVal is of type bool which is 1 byte, but it's allocating for the size 
of a pointer which is 4 bytes.  That would mean it's allocating more 
space than needed though, not less.

Ben

On 10/04/2016 09:56 AM, Vitaly Prapirny wrote:
> I know nothing about your platform. If I understand your stack trace 
> correctly, the library failed to allocate block of 4294967168 bytes.
>
> You can try to rebuild xerces with
> typedef unsigned long XMLSize_t;
>
> Or simply add debug output into the 'void ValueHashTableOf<TVal, 
> THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and see 
> why the library wants to allocate so huge block.
>
> Good luck!
>    Vitaly
>
> Benjamin DuPont wrote:
>> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to be 
>> defined as a size_t which is probably correct:
>>
>> #define XERCES_SIZE_T size_t
>>
>> typedef XERCES_SIZE_T                XMLSize_t;
>>
>> Ben
>>
>>
>> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>>> Hi Benjamin,
>>>
>>> Seems like XMLSize_t type has been defined incorrectly on your 
>>> platform.
>>>
>>> Good luck!
>>>    Vitaly
>>>
>>> Benjamin DuPont wrote:
>>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>>> following arguments:
>>>>
>>>>     --disable-pretty-make \
>>>>     --enable-transcoder-iconv \
>>>>     --enable-netaccessor-socket \
>>>>     --enable-msgloader-inmemory
>>>>
>>>> Here's the stack trace:
>>>>
>>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>>> src/malloc/malloc.c:219
>>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>>    from 
>>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>>
>>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>>> (this=<optimized out>,
>>>>     size=<optimized out>) at xercesc/internal/MemoryManagerImpl.cpp:40
>>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>>> xercesc_3_1::StringHasher>::rehash (
>>>>     this=this@entry=0xb6f88438) at 
>>>> ./xercesc/util/ValueHashTableOf.c:225
>>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>>> xercesc_3_1::StringHasher>::put (
>>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>>> <xercesc_3_1::gEncodingArray+15088>,
>>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>>> (this=this@entry=0xb6f88420)
>>>>     at xercesc/util/EncodingValidator.cpp:79
>>>> #7  0xb6db9b38 in xercesc_3_1::EncodingValidator::EncodingValidator 
>>>> (this=0xb6f88420)
>>>>     at xercesc/util/EncodingValidator.cpp:50
>>>> #8  0xb6db9b5c in 
>>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>>     at xercesc/util/EncodingValidator.cpp:34
>>>> #9  0xb6dd80fc in xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>>     at xercesc/util/XMLInitializer.cpp:44
>>>> #10 0x000105c4 in main ()
>>>>
>>>>
>>>
>>
>

-- 
Ben DuPont
Owner/Operator
nebland software, LLC
ben@nebland.com | (920)328-5236
www.nebland.com


Re: xerces openwrt rpi zero

Posted by Vitaly Prapirny <ma...@mebius.net>.
I know nothing about your platform. If I understand your stack trace 
correctly, the library failed to allocate block of 4294967168 bytes.

You can try to rebuild xerces with
typedef unsigned long XMLSize_t;

Or simply add debug output into the 'void ValueHashTableOf<TVal, 
THasher>::rehash()' near ./xercesc/util/ValueHashTableOf.c:225 and see 
why the library wants to allocate so huge block.

Good luck!
    Vitaly

Benjamin DuPont wrote:
> Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to be 
> defined as a size_t which is probably correct:
>
> #define XERCES_SIZE_T size_t
>
> typedef XERCES_SIZE_T                XMLSize_t;
>
> Ben
>
>
> On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
>> Hi Benjamin,
>>
>> Seems like XMLSize_t type has been defined incorrectly on your platform.
>>
>> Good luck!
>>    Vitaly
>>
>> Benjamin DuPont wrote:
>>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>>> following arguments:
>>>
>>>     --disable-pretty-make \
>>>     --enable-transcoder-iconv \
>>>     --enable-netaccessor-socket \
>>>     --enable-msgloader-inmemory
>>>
>>> Here's the stack trace:
>>>
>>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>>> src/malloc/malloc.c:219
>>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>>    from 
>>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>>
>>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>>> (this=<optimized out>,
>>>     size=<optimized out>) at xercesc/internal/MemoryManagerImpl.cpp:40
>>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>>> xercesc_3_1::StringHasher>::rehash (
>>>     this=this@entry=0xb6f88438) at 
>>> ./xercesc/util/ValueHashTableOf.c:225
>>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>>> xercesc_3_1::StringHasher>::put (
>>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>>> <xercesc_3_1::gEncodingArray+15088>,
>>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>>> (this=this@entry=0xb6f88420)
>>>     at xercesc/util/EncodingValidator.cpp:79
>>> #7  0xb6db9b38 in xercesc_3_1::EncodingValidator::EncodingValidator 
>>> (this=0xb6f88420)
>>>     at xercesc/util/EncodingValidator.cpp:50
>>> #8  0xb6db9b5c in 
>>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>>     at xercesc/util/EncodingValidator.cpp:34
>>> #9  0xb6dd80fc in xercesc_3_1::XMLInitializer::initializeStaticData ()
>>>     at xercesc/util/XMLInitializer.cpp:44
>>> #10 0x000105c4 in main ()
>>>
>>>
>>
>


Re: xerces openwrt rpi zero

Posted by Benjamin DuPont <be...@nebland.com>.
Thanks Vitaly.  Do you have any tips on how to fix this?  Looks to be 
defined as a size_t which is probably correct:

#define XERCES_SIZE_T size_t

typedef XERCES_SIZE_T                XMLSize_t;

Ben


On 10/04/2016 02:10 AM, Vitaly Prapirny wrote:
> Hi Benjamin,
>
> Seems like XMLSize_t type has been defined incorrectly on your platform.
>
> Good luck!
>    Vitaly
>
> Benjamin DuPont wrote:
>> I'm trying to build xerces for OpenWRT on the rpi zero.  xerces 
>> segfaults in XMLPlatformUtils::Initialize().  I've tried 3.1.1, 
>> 3.1.2, and 3.1.4 all with the same result.  I'm building with the 
>> following arguments:
>>
>>     --disable-pretty-make \
>>     --enable-transcoder-iconv \
>>     --enable-netaccessor-socket \
>>     --enable-msgloader-inmemory
>>
>> Here's the stack trace:
>>
>> #0  0xb6fb1fc4 in unbin (c=c@entry=0xb6bad348, i=i@entry=42) at 
>> src/malloc/malloc.c:219
>> #1  0xb6fb2b30 in malloc (n=4294967168) at src/malloc/malloc.c:346
>> #2  0xb6c3aa30 in operator new(unsigned int) ()
>>    from 
>> /home/dupes/data/projects/epri/cea2045/openwrt/source/rpi/openwrt/scripts/../staging_dir/target-arm_arm1176jzf-s+vfp_musl-1.1.15_eabi/root-brcm2708/usr/lib/libstdc++.so.6 
>>
>> #3  0xb6e34268 in xercesc_3_1::MemoryManagerImpl::allocate 
>> (this=<optimized out>,
>>     size=<optimized out>) at xercesc/internal/MemoryManagerImpl.cpp:40
>> #4  0xb6db9e1c in xercesc_3_1::ValueHashTableOf<bool, 
>> xercesc_3_1::StringHasher>::rehash (
>>     this=this@entry=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:225
>> #5  0xb6db9a3c in xercesc_3_1::ValueHashTableOf<bool, 
>> xercesc_3_1::StringHasher>::put (
>>     valueToAdopt=<optimized out>, key=0xb6ed0ae6 
>> <xercesc_3_1::gEncodingArray+15088>,
>>     this=0xb6f88438) at ./xercesc/util/ValueHashTableOf.c:186
>> #6  xercesc_3_1::EncodingValidator::initializeRegistry 
>> (this=this@entry=0xb6f88420)
>>     at xercesc/util/EncodingValidator.cpp:79
>> #7  0xb6db9b38 in xercesc_3_1::EncodingValidator::EncodingValidator 
>> (this=0xb6f88420)
>>     at xercesc/util/EncodingValidator.cpp:50
>> #8  0xb6db9b5c in 
>> xercesc_3_1::XMLInitializer::initializeEncodingValidator ()
>>     at xercesc/util/EncodingValidator.cpp:34
>> #9  0xb6dd80fc in xercesc_3_1::XMLInitializer::initializeStaticData ()
>>     at xercesc/util/XMLInitializer.cpp:44
>> #10 0x000105c4 in main ()
>>
>>
>

-- 
Ben DuPont
Owner/Operator
nebland software, LLC
ben@nebland.com | (920)328-5236
www.nebland.com