gcc 2.96, libstdc++ v3 and efence
Maurizio Umberto Puxeddu
umbpux@tin.it
Mon Aug 21 05:34:00 GMT 2000
This a testcase that trigger the bug without using efence (at least I
think it is the same bug):
#include <iostream>
#include <stdlib.h>
void *
operator new(size_t m)
{
#ifdef PRINT_MESSAGE
std::cout << "new" << std::endl;
#endif
return malloc(m);
}
void
operator delete(void *p)
{
#ifdef PRINT_MESSAGE
std::cout << "delete" << std::endl;
#endif
free(p);
}
int
main(void)
{
int *p = new int;
delete [] p;
return 0;
}
If I enable cout messages inside the new and delete operators the
program will segfault with this stack trace:
Program received signal SIGSEGV, Segmentation fault.
std::basic_ostream<char, std::char_traits<char> >::sentry::sentry (
this=0xbffff34c, __os=@0x8049f68)
at ../../../../gcc/libstdc++-v3/bits/basic_ios.h:98
98 { return _M_streambuf_state; }
(gdb) bt
#0 std::basic_ostream<char, std::char_traits<char> >::sentry::sentry (
this=0xbffff34c, __os=@0x8049f68)
at ../../../../gcc/libstdc++-v3/bits/basic_ios.h:98
#1 0x400b6267 in std::basic_ostream<char, std::char_traits<char> > &
std::operator<<<std::char_traits<char> > (__out=@0x8049f68,
__s=0x8048d24 "new")
at ../../../../gcc/libstdc++-v3/bits/std_ostream.h:635
#2 0x8048b00 in __builtin_new (m=24) at prova.cc:8
#3 0x4007c49d in std::locale::classic ()
at ../../../../gcc/libstdc++-v3/src/locale.cc:336
#4 0x4009839d in std::basic_filebuf<char, std::char_traits<char>
>::basic_filebuf (this=0x400e8f00) at ../../../../gcc/libstdc++-v3/bits/localefwd.h:302
#5 0x40077ec6 in __static_initialization_and_destruction_0
(__initialize_p=1,
__priority=65535) at
../../../../gcc/libstdc++-v3/bits/locale_facets.h:35
#6 0x400785a2 in global constructors keyed to std::__cfileinit ()
at ../../../../gcc/libstdc++-v3/bits/std_fstream.h:96
#7 0x40074f95 in __do_global_ctors_aux () at
../../gcc/gcc/cp/tinfo2.cc:450
#8 0x40064a52 in ?? () from /usr/local2/lib/libstdc++.so.3
Hope this helps.
Maurizio Umberto Puxeddu
More information about the Libstdc++
mailing list