You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Jim Meyering <ji...@meyering.net> on 2006/12/22 21:37:26 UTC

bdbstore status

FYI, I've converted bdbstore to use autoconf, automake, and libtool.
And now it compiles with the same set of warning options used by qpidc.
It builds and passes "make check" on Debian unstable, and builds
but fails the system_test.sh check on rawhide.

In case anyone can guess the cause off hand, I've included
valgrind output and a gdb stack trace below.  For reference,
here's the command I used:

  libtool --mode=execute valgrind ../../qpidc-0.1/src/qpidd \
    -s ../lib/.libs/libbdbstore.so

BTW, to get this far, I needed not only qpidc (aka cpp), but also the
python/ and specs/ directories in order to be able to run the tests.

Here's the valgrind output:

==9249== Memcheck, a memory error detector.
==9249== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==9249== Using LibVEX rev 1658, a library for dynamic binary translation.
==9249== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==9249== Using valgrind-3.2.1, a dynamic binary instrumentation framework.
==9249== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==9249== For more details, rerun with: -v
==9249==
==9249== Invalid read of size 4
==9249==    at 0x8BA37A: std::ostream::sentry::sentry(std::ostream&) (in /usr/lib/libstdc++.so.6.0.8)
==9249==    by 0x8BB4A9: std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) (in /usr/lib/libstdc++.so.6.0.8)
==9249==    by 0x4253D91: create (BdbMessageStore.cpp:608)
==9249==    by 0x4045368: qpid::sys::Module<qpid::broker::MessageStore>::Module(std::string const&) (Module.h:71)
==9249==    by 0x40450D6: qpid::broker::MessageStoreModule::MessageStoreModule(std::string const&) (MessageStoreModule.cpp:27)
==9249==    by 0x404960A: qpid::broker::SessionHandlerFactoryImpl::SessionHandlerFactoryImpl(std::string const&, unsigned long long, unsigned) (SessionHandlerFactoryImpl.cpp:44)
==9249==    by 0x4028B8D: qpid::broker::Broker::Broker(qpid::broker::Configuration const&) (Broker.cpp:34)
==9249==    by 0x4028C39: qpid::broker::Broker::create(qpid::broker::Configuration const&) (Broker.cpp:46)
==9249==    by 0x8048DAA: main (qpidd.cpp:51)
==9249==  Address 0xFFFFFFF4 is not stack'd, malloc'd or (recently) free'd
==9249==
==9249== Process terminating with default action of signal 11 (SIGSEGV)
==9249==  Access not within mapped region at address 0xFFFFFFF4
==9249==    at 0x8BA37A: std::ostream::sentry::sentry(std::ostream&) (in /usr/lib/libstdc++.so.6.0.8)
==9249==    by 0x8BB4A9: std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) (in /usr/lib/libstdc++.so.6.0.8)
==9249==    by 0x4253D91: create (BdbMessageStore.cpp:608)
==9249==    by 0x4045368: qpid::sys::Module<qpid::broker::MessageStore>::Module(std::string const&) (Module.h:71)
==9249==    by 0x40450D6: qpid::broker::MessageStoreModule::MessageStoreModule(std::string const&) (MessageStoreModule.cpp:27)
==9249==    by 0x404960A: qpid::broker::SessionHandlerFactoryImpl::SessionHandlerFactoryImpl(std::string const&, unsigned long long, unsigned) (SessionHandlerFactoryImpl.cpp:44)
==9249==    by 0x4028B8D: qpid::broker::Broker::Broker(qpid::broker::Configuration const&) (Broker.cpp:34)
==9249==    by 0x4028C39: qpid::broker::Broker::create(qpid::broker::Configuration const&) (Broker.cpp:46)
==9249==    by 0x8048DAA: main (qpidd.cpp:51)
==9249==
==9249== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 36 from 1)
==9249== malloc/free: in use at exit: 73,099 bytes in 159 blocks.
==9249== malloc/free: 186 allocs, 27 frees, 73,728 bytes allocated.
==9249== For counts of detected errors, rerun with: -v
==9249== searching for pointers to 159 not-freed blocks.
==9249== checked 356,076 bytes.
==9249==
==9249== LEAK SUMMARY:
==9249==    definitely lost: 0 bytes in 0 blocks.
==9249==      possibly lost: 1,298 bytes in 39 blocks.
==9249==    still reachable: 71,801 bytes in 120 blocks.
==9249==         suppressed: 0 bytes in 0 blocks.
==9249== Reachable blocks (those to which a pointer was found) are not shown.
==9249== To see them, rerun with: --show-reachable=yes

And here's a backtrace from gdb:

Program received signal SIGSEGV, Segmentation fault.
0x008ba37a in std::ostream::sentry::sentry () from /usr/lib/libstdc++.so.6
(gdb) bt
#0  0x008ba37a in std::ostream::sentry::sentry () from /usr/lib/libstdc++.so.6
#1  0x008bb4aa in std::operator<< <std::char_traits<char> > ()
   from /usr/lib/libstdc++.so.6
#2  0x00200d92 in create () at BdbMessageStore.cpp:608
#3  0x00e3e369 in Module (this=0x83d583c, module=@0xbfaa302c)
    at ../../lib/common/sys/Module.h:71
#4  0x00e3e0d7 in MessageStoreModule (this=0x83d5838, name=@0xbfaa302c)
    at MessageStoreModule.cpp:27
#5  0x00e4260b in SessionHandlerFactoryImpl (this=0x83cd708,
    _store=@0xbfaa302c, _stagingThreshold=0, _timeout=30000)
    at SessionHandlerFactoryImpl.cpp:44
#6  0x00e21b8e in Broker (this=0x83cd6f8, config=@0xbfaa2fa4) at Broker.cpp:34
#7  0x00e21c3a in qpid::broker::Broker::create (config=@0xbfaa2fa4)
    at Broker.cpp:46
#8  0x08048dab in main (argc=3, argv=0xbfaa3134) at qpidd.cpp:51