gdb error: Previous frame inner to this frame (corrupt stack?)
Hello,
I have a crashing application and tried to find out what is going
wrong. So I run this application with the gdb debugger. I found the
position of the crash in a function which searches the id of a
database element by its name. If the database element is not found it
shall throw an exception. This is the related code:
SRC_ID_TYP Source::getId( const std::string& name_ )
throw( XmlDatabaseException ) {
SRC_ID_TYP srcId;
if ( GetSourceId( name_.c_str(), &( srcId ) ) != OLD_PAG ) {
string errMsg( "Source '" );
errMsg += name_ + "' does not exist in the database";
throw XmlDatabaseException( errMsg );
}
return srcId;
} // *** Source::getId() ***
If the id can be resolved correctly the application works fine. But if
not, it crashes when it tries to throw the exception. The message I
get in the debugger then is:
"Previous frame inner to this frame (corrupt stack?)"
But when I look at the backtrace of the stack it looks very ok:
8 xmldb::Source::getId() Source.cpp:398 0x08062e68
7 xmldb::Source::create() Source.cpp:106 0x0805fb3f
6 xmldb::ADSFile::parseDOMTree() ADSFile.cpp:380 0x0805aec0
5 xmldb::ADSFile::parseXML() ADSFile.cpp:312 0x0805a0cb
4 xmldb::ADSFile::read() ADSFile.cpp:104 0x08056fcf
3 ImportExport::importData() ImportExport.cpp:373 0x08051c1b
2 ImportExport::execute() ImportExport.cpp:305 0x08051764
1 main() iet.cpp:56 0x08055fbb
Know I'm at the end of my knowledge.
Can someone tell me, what is the reason for such an error message? And
what can I investigate further to find the mistake?
Thanks,
Sven