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

Christophe Prud'homme christophe.prudhomme at epfl.ch
Wed Nov 23 14:36:48 UTC 2005


[ Wednesday 23 November 2005 13:51 ]
| 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

Nope it is neither boost nor g++
you have upgraded g++ to 4.0.2-4 with the new allocator and you need to get 
the latest boost (-4) which just entered unstable.
Otherwise you will see this kind of message a lot.
see for example
http://lists.debian.org/debian-devel-announce/2005/11/msg00010.html

you are lucky that with g++-3.3 it works because it uses libstdc++5 and boost 
was compiled with libstdc++6 (and that's what the message says)
| /usr/lib/gcc-lib/i486-linux-gnu/3.3.6/../../../libboost_program_options.so,
| may conflict with libstdc++.so.5 $

C.
| $ 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
|
|
| _______________________________________________
| pkg-boost-devel mailing list
| pkg-boost-devel at lists.alioth.debian.org
| http://lists.alioth.debian.org/mailman/listinfo/pkg-boost-devel

-- 
Christophe Prud'homme
EPFL SB IACS CMCS
MA B2 534 (Bâtiment MA)
Station 8
CH-1015 Lausanne
Tel: +41 (0)21 693 25 47
Fax: +41 (0)21 693 43 03



More information about the pkg-boost-devel mailing list