[pkg-boost-devel] Bug#340430: libboost-program-options-dev: positional_options_description dtor abort

LI Daobing lidaobing at gmail.com
Wed Nov 23 12:51:42 UTC 2005


Package: libboost-program-options-dev
Version: 1.33.0-3
Severity: important

test-pd.cpp works with g++-3.3(with warning) but not with g++-4.0.
I think it's boost's bug, not g++'s

$ cat test-pd.cpp
#include <boost/program_options.hpp>

int main()
{
  namespace po = boost::program_options;
  po::positional_options_description pd;
  pd.add("filename", 1);
  pd.add("idxfname", 1);
  return 0;
}
$ g++-3.3 -g -o test-pd test-pd.cpp -lboost_program_options
/usr/bin/ld: warning: libstdc++.so.6, needed by /usr/lib/gcc-lib/i486-linux-gnu/3.3.6/../../../libboost_program_options.so, may conflict with libstdc++.so.5
$ ./test-pd; echo $?
0
$ g++-4.0 -g -o test-pd test-pd.cpp -lboost_program_options
$ ./test-pd
*** glibc detected *** free(): invalid pointer: 0x0808e2f0 ***
Aborted
$ ldd test-pd
        linux-gate.so.1 =>  (0xffffe000)
        libboost_program_options-gcc-mt-1_33.so.1.33.0 => /usr/lib/libboost_program_options-gcc-mt-1_33.so.1.33.0 (0xb7e98000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7dbc000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7d97000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7d8c000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7c56000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7c4c000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7c39000)
        /lib/ld-linux.so.2 (0xb7ef5000)
$ gdb test-pd
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

(gdb) r
Starting program: /home/nichloas/test/c/test-pd
[Thread debugging using libthread_db enabled]
[New Thread -1211057952 (LWP 4937)]
*** glibc detected *** free(): invalid pointer: 0x0808e2f0 ***

Program received signal SIGABRT, Aborted.
[Switching to Thread -1211057952 (LWP 4937)]
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7d52691 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7d53f5b in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0xb7d88ba7 in __libc_message () from /lib/tls/i686/cmov/libc.so.6
#4  0xb7d8f177 in _int_free () from /lib/tls/i686/cmov/libc.so.6
#5  0xb7d8f612 in free () from /lib/tls/i686/cmov/libc.so.6
#6  0xb7f3b7c1 in operator delete () from /usr/lib/libstdc++.so.6
#7  0x08048875 in __gnu_cxx::new_allocator<std::string>::deallocate (this=0xbffd9f04, __p=0x808e2f0)
    at new_allocator.h:94
#8  0x08048898 in std::_Vector_base<std::string, std::allocator<std::string> >::_M_deallocate (this=0xbffd9f04,
    __p=0x808e2f0, __n=2) at stl_vector.h:123
#9  0x080488ce in ~_Vector_base (this=0xbffd9f04) at stl_vector.h:109
#10 0x080489ae in ~vector (this=0xbffd9f04) at stl_vector.h:273
#11 0x08048a20 in ~positional_options_description (this=0xbffd9f04) at positional_options.hpp:31
#12 0x080487a1 in main () at test-pd.cpp:9

$ g++ -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)


-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.14-1-686-smp
Locale: LANG=en_US.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8)

Versions of packages libboost-program-options-dev depends on:
ii  libboost-dev                  1.33.0-3   Boost C++ Libraries development fi
ii  libboost-program-options1.33. 1.33.0-3   program options library for C++

libboost-program-options-dev recommends no packages.

-- debconf-show failed




More information about the pkg-boost-devel mailing list