------- Comment #6 from danglin at gcc dot gnu dot org  2009-05-22 00:54 -------
The backtrace from the second delete is:

(gdb) bt
#0  operator delete (p=0x800000010000e530) at deallocate_global.cc:51
#1  0x400000000000de94 in
__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<void* const,
std::pair<unsigned long, unsigned long> > > >::deallocate (
    this=0x8000000100002938, __p=0x800000010000e530)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/ext/new_allocator.h:95
#2  0x400000000000d904 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::_M_put_node (
    this=0x8000000100002938, __p=0x800000010000e530)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:363
#3  0x400000000000cf38 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::_M_destroy_node
    (this=0x8000000100002938, __p=0x800000010000e530)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:384
#4  0x400000000000c124 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::_M_erase (
    this=0x8000000100002938, __x=0x800000010000e530)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:968
#5  0x400000000000d488 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::clear (
    this=0x8000000100002938)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:722
#6  0x400000000000cd28 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::erase (
    this=0x8000000100002938, __first={_M_node = 0x800000010000e530}, __last=
      {_M_node = 0x8000000100002940})
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:1377
#7  0x400000000000bef4 in std::_Rb_tree<void*, std::pair<void* const,
std::pair<unsigned long, unsigned long> >, std::_Select1st<std::pair<void*
const, std::pair<unsigned long, unsigned long> > >, std::less<void*>,
std::allocator<std::pair<void* const, std::pair<unsigned long, unsigned long> >
> >::erase (
    this=0x8000000100002938, _...@0x800003fffdff0fe0)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_tree.h:1366
#8  0x400000000000b210 in std::map<void*, std::pair<unsigned long, unsigned
long>, std::less<void*>, std::allocator<std::pair<void* const,
std::pair<unsigned long, unsigned long> > > >::erase (this=0x8000000100002938, 
    _...@0x800000010000e530)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/stl_map.h:582
#9  0x4000000000009ea4 in __gnu_cxx::throw_allocator_base::erase (
    p=0x800000010000e4f8, size=35)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/ext/throw_allocator.h:180
#10 0x400000000000e8cc in __gnu_cxx::throw_allocator<char>::deallocate (
    this=0x800003fffdff0f20, __p=0x800000010000e4f8 "", __n=35)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/ext/throw_allocator.h:334
#11 0x400000000000e35c in std::basic_string<char, std::char_traits<char>,
__gnu_cxx::throw_allocator<char> >::_Rep::_M_destroy (this=0x800000010000e4f8, 
    _...@0x800003fffdff0de8)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/basic_string.tcc:426
#12 0x400000000000efe0 in std::basic_string<char, std::char_traits<char>,
__gnu_cxx::throw_allocator<char> >::_Rep::_M_dispose (this=0x800000010000e4f8, 
    _...@0x800003fffdff0de8)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/basic_string.h:231
#13 0x400000000000ed6c in ~basic_string (this=0x8000000100001580)
    at
/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libstdc++-v3/include/bits/basic_string.h:498
#14 0x400000000000eca0 in __static_initialization_and_destruction_0 (
    __initialize_p=0, __priority=65535) at deallocate_global.cc:68
#15 0x400000000000f0a8 in global destructors keyed to _Znwm ()
    at deallocate_global.cc:73
#16 0x4000000000008bc4 in __do_global_dtors_aux ()
#17 0xc000000000032aa0 in TE_do_list#HLO_CL_#i1_0x0 ()
   from /usr/lib/pa20_64/dld.sl
#18 0xc00000000000d198 in TE_do_program_exit () from /usr/lib/pa20_64/dld.sl
#19 0x800003fffdcd762c in exit () from /lib/pa20_64/libc.2
#20 0xc00000000000b394 in UT_exit () from /usr/lib/pa20_64/dld.sl
#21 0xc00000000000b3b4 in exit () from /usr/lib/pa20_64/dld.sl
#22 0xc00000000000b478 in $START$ () from /usr/lib/pa20_64/dld.sl

      void
      deallocate(pointer __p, size_type __n)
      {
        erase(__p, sizeof(value_type) * __n);
        std::allocator<value_type>().deallocate(__p, __n);
      }

It originates from the call to erase in throw_allocator.h.  It would
appear that the call to delete arising from the call to erase is the
unexpected one. 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40094

Reply via email to