http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57426
--- Comment #2 from RajaGopal <rajagopal.maddi at plintron dot com> --- (In reply to Andrew Pinski from comment #1) > It is not __exchange_and_add which causing the abort but rather > TdrData::~TdrData which is not part of libstdc++ code. > __gnu_cxx::__exchange_and_add is inlined into TdrData::~TdrData which is why > gdb and the line numbers are a bit off for the abort. The TdrData structure is as below: #define TDR_COMMON_MAX_PARAMS 10 #define TDR_APPLICATION_MAX_PARAMS 90 class TdrData { public: string m_HDR[TDR_COMMON_MAX_PARAMS]; string m_CDR[TDR_APPLICATION_MAX_PARAMS]; TdrData(); ~TdrData(); void setChar(int , s8 ); void setInteger(int , s32 ); void setString(int , s8* ); void setHex(int , s8* , u16 ); //The functions below shall set the Header Data void setOpCode(u16 ); void setMapVersion(u16 ); void setRemoteAddr(s8* ); void setTdrId(); void setRemoteAddrSsn(int ); void setOriginatingModule(char *); void setContextId(char *); }; The TdrData constructor and destructor are defined as below: TdrData::TdrData() { } TdrData::~TdrData() { } The following piece of code gets executed in the code multiple times. The m_tdr is of type TdrData. m_tdr is newed at the application startup. The below code gets executed at run-time almost once for processing a message. The system dumps core upon the execution of the "delete(m_tdr)". Please let us know what can be the issue. if(NULL != m_tdr) delete(m_tdr); m_tdr = new TdrData;