Stacktrace

Stacktrace

Discuss the source code and development of Spring Engine in general from a technical point of view. Patches go here too.

Moderator: Moderators

Post Reply
User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Stacktrace

Post by Argh »

Um... ok, this is a stupid question probably, but how do I turn a stacktrace into something useful for debugging? The current SVN builds of Spring crash after approx. 5-10 minutes of play, using AAI 0.81, and I dunno whether it's AAI or Spring that's really causing the problem. Both program's logs tell me nothing useful, aside from the stacktraces, which I am assuming will help point to what's causing the problems.
User avatar
Peet
Malcontent
Posts: 4384
Joined: 27 Feb 2006, 22:04

Post by Peet »

User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Post by Argh »

Neato :o

Ok, so this is the result:

CCobFile::CCobFile(CFileHandler&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)
C:/taspring_trunk/rts/Sim/Units/COB/CobFile.cpp:189

CGameSetup::Init(char*, int)
C:/taspring_trunk/rts/System/TdfParser.h:152

TdfParser::GetAllValues(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
C:/taspring_trunk/C:/mingw/lib/gcc/mingw32/4.1.1/include/c++/ext/new_allocator.h:94

CGame::Draw()
C:/taspring_trunk/rts/Game/Game.cpp:1778

CGuiHandler::DrawCentroidCursor()
C:/taspring_trunk/rts/Game/UI/GuiHandler.cpp:3832

void TdfParser::GetDef<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
C:/taspring_trunk/C:/mingw/lib/gcc/mingw32/4.1.1/include/c++/bits/basic_string.h:233

boost::spirit::impl::concrete_parser<boost::spirit::contiguous<boost::spirit::action<boost::spirit::positive<boost::spirit::chset<char> >, boost::spirit::ref_value_actor<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::push_back_action> > >, boost::spirit::scanner<char*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::nil_t>::do_parse_virtual(boost::spirit::scanner<char*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> > const&) const
C:/taspring_trunk/mingwlibs/include/boost/detail/sp_counted_base_gcc_x86.hpp:0

boost::spirit::impl::concrete_parser<boost::spirit::contiguous<boost::spirit::action<boost::spirit::positive<boost::spirit::chset<char> >, boost::spirit::ref_value_actor<std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, boost::spirit::push_back_action> > >, boost::spirit::scanner<char*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::nil_t>::clone() const
C:/taspring_trunk/mingwlibs/include/boost/spirit/core/composite/actions.hpp:78

boost::spirit::impl::concrete_parser<boost::spirit::kleene_star<boost::spirit::alternative<boost::spirit::init_closure_parser<boost::spirit::rule<boost::spirit::scanner<char const*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::closure_context<tdf_grammar::section_closure>, boost::spirit::nil_t>, phoenix::tuple<phoenix::actor<phoenix::value<TdfParser::TdfSection*> >, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t> >, boost::spirit::rule<boost::spirit::scanner<char const*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::nil_t, boost::spirit::nil_t> > >, boost::spirit::scanner<char const*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> >, boost::spirit::nil_t>::do_parse_virtual(boost::spirit::scanner<char const*, boost::spirit::scanner_policies<boost::spirit::skip_parser_iteration_policy<boost::spirit::alternative<boost::spirit::alternative<boost::spirit::space_parser, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::strlit<char const*>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::confix_parser<boost::spirit::strlit<char const*>, boost::spirit::kleene_star<boost::spirit::anychar_parser>, boost::spirit::alternative<boost::spirit::eol_parser, boost::spirit::end_parser>, boost::spirit::unary_parser_category, boost::spirit::non_nested, boost::spirit::is_lexeme> >, boost::spirit::iteration_policy>, boost::spirit::match_policy, boost::spirit::action_policy> > const&) const
C:/taspring_trunk/mingwlibs/include/boost/spirit/core/non_terminal/impl/rule.ipp:0

std::vector<S3DOPrimitive, std::allocator<S3DOPrimitive> >::_M_insert_aux(__gnu_cxx::__normal_iterator<S3DOPrimitive*, std::vector<S3DOPrimitive, std::allocator<S3DOPrimitive> > >, S3DOPrimitive const&)
C:/taspring_trunk/C:/mingw/lib/gcc/mingw32/4.1.1/include/c++/bits/stl_construct.h:121

gnu_exception_handler@4
J:/MinGW/home/Sherpya/stage/mingw-runtime-3.10/crt1.c:119

gnu_exception_handler@4
J:/MinGW/home/Sherpya/stage/mingw-runtime-3.10/crt1.c:116

rc
??:0

... what does this mean?
User avatar
yuritch
Spring 1944 Developer
Posts: 1018
Joined: 11 Oct 2005, 07:18

Post by yuritch »

Those are probably places in code which were executing when the crash happened. Using that and the corresponding source, it's possible to track down the reasons of that crash.
For example, this:

Code: Select all

CCobFile::CCobFile(CFileHandler&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) 
C:/taspring_trunk/rts/Sim/Units/COB/CobFile.cpp:189
means that Spring crashed when executing this (line numbers added for ease of use):

Code: Select all

187	// Also add the weapon aiming stuff
188	for (int i = 0; i < COB_MaxWeapons; ++i) {
189		char buf[15];
190		sprintf(buf, "Weapon%d", i + 1);
191		string weapon(buf);
Of course, line numbers depend on what revision of code was used. I used 3706 for that example, it's possible you used something different so line numbers don't match. Which exactly svn revision was used?
User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Post by Argh »

The latest one, of course.
User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Post by Argh »

Aha! Got all of the latest files for GUI.LUA, UnitSync.dll, etc., and problem seems to have greatly eased up, with KAI. Will test again with AAI.
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Re: Stacktrace

Post by Tobi »

Argh wrote:The current SVN builds of Spring crash after approx. 5-10 minutes of play,
P3374H wrote: http://www.osrts.info/~tvo/spring/stack ... slator.php

lalala, read stickies, etc :)
Nope, stacktraceTranslator is only valid for 0.74b3 build (it should give a warning for that I think).

Basically you can not do anything with stacktraces in SVN builds ATM, because they're shipped without debugging symbols. (You'd need to recompile to get debugging symbols...)
User avatar
Peet
Malcontent
Posts: 4384
Joined: 27 Feb 2006, 22:04

Post by Peet »

Gah, I thought it was .74b3 or later...my bad
Post Reply

Return to “Engine”