#946 'double free' error when local and installed versions of dune exist
Metadata
Property | Value |
---|---|
Reported by | Elias Pipping (elias.pipping@fu-berlin.de) |
Reported at | Aug 23, 2011 10:44 |
Type | Bug Report |
Version | 2.1 |
Operating System | Unspecified / All |
Last edited by | Christian Engwer (christi@conan.iwr.uni-heidelberg.de) |
Last edited at | Jul 9, 2012 20:26 |
Closed by | Christian Engwer (christi@conan.iwr.uni-heidelberg.de) |
Closed at | Jul 9, 2012 20:26 |
Closed in version | Unknown |
Resolution | Fixed |
Comment |
Description
The test dune/grid/genericgeometry/test/testmapping from dune-grid 2.1.0 fails for me.
That happens with vanilla copies of dune-common 2.1.0 and dune-grid 2.1.0 on a debian 6.0.2 box, using gcc 4.4.5 and glibc 2.11.2.
On another (non-debian) box that has gcc 4.4.6 and glibc 2.12.1, I cannot reproduce this problem -- it has a completely different set of software on it, though.
Here's what happens:
poncelet% ./testmapping YaspGridParameterBlock: Parameter 'overlap' not specified, defaulting to '0'. ZERO ERRORS in mapping.phi!!!!!!! ZERO ERRORS in mapping.det!!!!!!! ZERO ERRORS in mapping.jacobianT!!!!!!! ZERO ERRORS in mapping.volume!!!!!!! ZERO ERRORS in mapping.normal!!!!!!! *** glibc detected *** ./testmapping: double free or corruption (!prev): 0x000000000166fbe0 *** ======= Backtrace: ========= /lib/libc.so.6(+0x71ad6)[0x7f91a33dfad6] poncelet% ./testmapping YaspGridParameterBlock: Parameter 'overlap' not specified, defaulting to '0'. ZERO ERRORS in mapping.phi!!!!!!! ZERO ERRORS in mapping.det!!!!!!! ZERO ERRORS in mapping.jacobianT!!!!!!! ZERO ERRORS in mapping.volume!!!!!!! ZERO ERRORS in mapping.normal!!!!!!! *** glibc detected *** ./testmapping: double free or corruption (!prev): 0x000000000071cbe0 *** ======= Backtrace: ========= /lib/libc.so.6(+0x71ad6)[0x7fb9ffe6bad6] /lib/libc.so.6(cfree+0x6c)[0x7fb9ffe7084c] ./testmapping[0x44248e] ./testmapping[0x4421d4] ./testmapping[0x441ea2] ./testmapping(_ZNSt11_Deque_baseIbSaIbEED2Ev+0x3e)[0x441aec] ./testmapping[0x441a05] ./testmapping[0x4413ca] ./testmapping(_ZN4Dune11DebugStreamILj1ELj1ELj1ENS_16greater_or_equalEED1Ev+0x22f)[0x443351] /lib/libc.so.6(__cxa_finalize+0xa5)[0x7fb9ffe30965] /usr/lib/libdunecommon.so.0(+0x58a6)[0x7fba005f88a6] ======= Memory map: ======== 00400000-00461000 r-xp 00000000 00:1a 239298273 /home/cocktail/pipping/dune-4.4.5/dune-grid-2.1.0/dune/grid/genericgeometry/test/testmapping 00661000-00662000 rw-p 00061000 00:1a 239298273 /home/cocktail/pipping/dune-4.4.5/dune-grid-2.1.0/dune/grid/genericgeometry/test/testmapping
00662000-00664000 rw-p 00000000 00:00 0 0071b000-0077e000 rw-p 00000000 00:00 0 [heap] 7fb9f8000000-7fb9f8021000 rw-p 00000000 00:00 0 7fb9f8021000-7fb9fc000000 ---p 00000000 00:00 0 7fb9ffdfa000-7fb9fff52000 r-xp 00000000 fe:00 361084 /lib/libc-2.11.2.so 7fb9fff52000-7fba00151000 ---p 00158000 fe:00 361084 /lib/libc-2.11.2.so 7fba00151000-7fba00155000 r--p 00157000 fe:00 361084 /lib/libc-2.11.2.so 7fba00155000-7fba00156000 rw-p 0015b000 fe:00 361084 /lib/libc-2.11.2.so 7fba00156000-7fba0015b000 rw-p 00000000 00:00 0 7fba0015b000-7fba00171000 r-xp 00000000 00:1a 101599591 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libgcc_s.so.1 7fba00171000-7fba00370000 ---p 00016000 00:1a 101599591 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libgcc_s.so.1 7fba00370000-7fba00371000 rw-p 00015000 00:1a 101599591 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libgcc_s.so.1 7fba00371000-7fba003f1000 r-xp 00000000 fe:00 361415 /lib/libm-2.11.2.so 7fba003f1000-7fba005f1000 ---p 00080000 fe:00 361415 /lib/libm-2.11.2.so 7fba005f1000-7fba005f2000 r--p 00080000 fe:00 361415 /lib/libm-2.11.2.so 7fba005f2000-7fba005f3000 rw-p 00081000 fe:00 361415 /lib/libm-2.11.2.so 7fba005f3000-7fba00609000 r-xp 00000000 fe:00 369737 /usr/lib/libdunecommon.so.0.0.0 7fba00609000-7fba00809000 ---p 00016000 fe:00 369737 /usr/lib/libdunecommon.so.0.0.0 7fba00809000-7fba0080a000 rw-p 00016000 fe:00 369737 /usr/lib/libdunecommon.so.0.0.0 7fba0080a000-7fba008fb000 r-xp 00000000 00:1a 101597186 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libstdc++.so.6.0.13 7fba008fb000-7fba00afb000 ---p 000f1000 00:1a 101597186 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libstdc++.so.6.0.13 7fba00afb000-7fba00b02000 r--p 000f1000 00:1a 101597186 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libstdc++.so.6.0.13 7fba00b02000-7fba00b04000 rw-p 000f8000 00:1a 101597186 /home/cocktail/pipping/gcc-inst-4.4.5/lib64/libstdc++.so.6.0.13 7fba00b04000-7fba00b19000 rw-p 00000000 00:00 0 7fba00b19000-7fba00b24000 r-xp 00000000 fe:00 369719 /usr/lib/libdevS.so.0.0.0 7fba00b24000-7fba00d23000 ---p 0000b000 fe:00 369719 /usr/lib/libdevS.so.0.0.0 7fba00d23000-7fba00d24000 rw-p 0000a000 fe:00 369719 /usr/lib/libdevS.so.0.0.0 7fba00d24000-7fba00d26000 rw-p 00000000 00:00 0 7fba00d26000-7fba00f50000 r-xp 00000000 fe:00 370144 /usr/lib/libugS3.so.0.0.0 7fba00f50000-7fba0114f000 ---p 0022a000 fe:00 370144 /usr/lib/libugS3.so.0.0.0 7fba0114f000-7fba0115c000 rw-p 00229000 fe:00 370144 /usr/lib/libugS3.so.0.0.0 7fba0115c000-7fba011e7000 rw-p 00000000 00:00 0 7fba011e7000-7fba013e2000 r-xp 00000000 fe:00 370142 /usr/lib/libugS2.so.0.0.0 7fba013e2000-7fba015e1000 ---p 001fb000 fe:00 370142 /usr/lib/libugS2.so.0.0.0 7fba015e1000-7fba015e9000 rw-p 001fa000 fe:00 370142 /usr/lib/libugS2.so.0.0.0 7fba015e9000-7fba01649000 rw-p 00000000 00:00 0 7fba01649000-7fba016a6000 r-xp 00000000 fe:00 369875 /usr/lib/libgmp.so.3.5.2 7fba016a6000-7fba018a6000 ---p 0005d000 fe:00 369875 /usr/lib/libgmp.so.3.5.2 7fba018a6000-7fba018a7000 rw-p 0005d000 fe:00 369875 /usr/lib/libgmp.so.3.5.2 7fba018a7000-7fba018aa000 r-xp 00000000 fe:00 576111 /usr/lib/libgmpxx.so.4.1.2 7fba018aa000-7fba01aaa000 ---p 00003000 fe:00 576111 /usr/lib/libgmpxx.so.4.1.2 7fba01aaa000-7fba01aab000 rw-p 00003000 fe:00 576111 /usr/lib/libgmpxx.so.4.1.2 7fba01aab000-7fba01ac9000 r-xp 00000000 fe:00 361367 /lib/ld-2.11.2.so
7fba01ca0000-7fba01ca6000 rw-p 00000000 00:00 0 7fba01cc5000-7fba01cc8000 rw-p 00000000 00:00 0 7fba01cc8000-7fba01cc9000 r--p 0001d000 fe:00 361367 /lib/ld-2.11.2.so 7fba01cc9000-7fba01cca000 rw-p 0001e000 fe:00 361367 /lib/ld-2.11.2.so 7fba01cca000-7fba01ccb000 rw-p 00000000 00:00 0 7fff602aa000-7fff602bf000 rw-p 00000000 00:00 0 [stack] 7fff603ff000-7fff60400000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] zsh: abort ./testmapping
Here's a backtrace:
poncelet% gdb ./testmapping [..] (gdb) bt #0 0x00007ffff6160165 in *__GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 (closed) 0x00007ffff6162f70 in *__GI_abort () at abort.c:92 #2 (closed) 0x00007ffff619627b in __libc_message (do_abort=, fmt=) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189 #3 (closed) 0x00007ffff619fad6 in malloc_printerr (action=3, str=0x7ffff6256ac8 "double free or corruption (!prev)", ptr=) at malloc.c:6267 #4 (closed) 0x00007ffff61a484c in *__GI___libc_free (mem=) at malloc.c:3739 #5 (closed) 0x000000000044248e in __gnu_cxx::new_allocator::deallocate (this=0x663318, __p=0x665be0) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/ext/new_allocator.h:95 #6 (closed) 0x00000000004421d4 in std::_Deque_base<bool, std::allocator >::_M_deallocate_node (this=0x663318, __p=0x665be0) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/bits/stl_deque.h:450 #7 (closed) 0x0000000000441ea2 in std::_Deque_base<bool, std::allocator >::_M_destroy_nodes (this=0x663318, __nstart=0x665b88, __nfinish=0x665b90) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/bits/stl_deque.h:553 #8 (closed) 0x0000000000441aec in ~_Deque_base (this=0x663318, __in_chrg=) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/bits/stl_deque.h:476 #9 (closed) 0x0000000000441a05 in ~deque (this=0x663318, __in_chrg=) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/bits/stl_deque.h:790 #10 (closed) 0x00000000004413ca in ~stack (this=0x663318, __in_chrg=) at /home/cocktail/pipping/gcc-inst-4.4.5/lib/gcc/x86_64-unknown-linux-gnu/4.4.5/../../../../include/c++/4.4.5/bits/stl_stack.h:93 #11 (closed) 0x0000000000443351 in ~DebugStream (this=0x663300, __in_chrg=) at debugstream.hh:250 #12 (closed) 0x00007ffff6164965 in __cxa_finalize (d=0x7ffff6b3d7e0) at cxa_finalize.c:56 #13 (closed) 0x00007ffff692c8a6 in ?? () from /usr/lib/libdunecommon.so.0 #14 (closed) 0x000000000000000d in ?? () #15 (closed) 0x0000000000000000 in ?? () (gdb)
Here is how testmapping is linked:
/bin/bash ../../../../libtool --tag=CXX --mode=link /home/cocktail/pipping/gcc-inst-4.4.5/bin/g++ -std=c++0x -O0 -ggdb3 -o testmapping testmapping.o -L/usr/lib -lgmpxx -lgmp -lugS2 -lugS3 -ldevS -L/home/cocktail/pipping/dune-4.4.5/dune-common-2.1.0/lib -ldunecommon -L/home/cocktail/pipping/dune-4.4.5/dune-common-2.1.0/lib -ldunecommon -L/home/cocktail/pipping/dune-4.4.5/dune-common-2.1.0/lib -ldunecommon -lm ../../../../dune/grid/libgrid.la -L/home/cocktail/pipping/dune-4.4.5/dune-common-2.1.0/lib -ldunecommon -lm
If all the occurrences of -ldunecommon are stripped, the test passes. Furthermore, the test can be reduced down to
poncelet% cat testmapping.cc #include <config.h>
#include #include
using namespace Dune;
int main ( int argc, char **argv ) { std::stringstream gridN; gridN << "../../../../doc/grids/dgf/grid" << GridSelector::GridType::dimension << "Y.dgf"; std::string gridName = gridN.str();
GridPtr< GridSelector::GridType > grid( gridName );
return 0; } poncelet%
And the double free/corruption will still occur.
I'm attaching dune-grid's config.log.