Strange that it is segfaulting on an IGObject::getName(). Looks like  
the exact place it fails is result.first->getName() in #2 , line 299  
of colonize.cpp. Weirdest part is that result.first points to i- 
 >first, and i->first is cast as a planet then asserted, so IMO it  
should fail at the assert and not after it; since i->first should be a  
valid planet IGO if it passed its assert.

Ryan 'jphr' Neufeld
---------------------------
visit me at hammerofcode.com

On 18-Aug-08, at 11:55 AM, Vincent Verhoeven wrote:

> Hello all,
>
> On stress-testing the Risk ruleset (that's what bots are for, right?),
> the server segfaults when adding lots (like, 3 or something) of
> colonization orders. This is reproducible. I have a core file, the
> backtrace is
>
> #0  0x080db9a9 in boost::shared_ptr<ObjectInfoData>::operator->  
> (this=0x14)
>    at /usr/include/boost/shared_ptr.hpp:315
> #1  0x080da9c1 in IGObject::getName (this=0x0) at object.cpp:74
> #2  0xb781093d in RiskRuleset::Colonize::getTopPlayerAndBid  
> (this=0x81ba788,
>    obj=0x81c71a0) at colonize.cpp:299
> #3  0xb7810f6e in RiskRuleset::Colonize::doOrder (this=0x81ba788,
>    obj=0x81a05d0) at colonize.cpp:158
> #4  0xb781dc63 in RiskRuleset::RiskTurn::processOrdersOfGivenType (
>    this=0x81824a8, [EMAIL PROTECTED]) at riskturn.cpp:270
> #5  0xb781ec8e in RiskRuleset::RiskTurn::doTurn (this=0x81824a8)
>    at riskturn.cpp:70
> #6  0x080c941a in Game::doEndOfTurn (this=0x816aa20) at game.cpp:289
> #7  0x081227fe in TurnTimer::timerFinished (this=0x81c6f58)
>    at turntimer.cpp:183
> #8  0x08123bad in TimerCallbackImpl<TurnTimer*, void (TurnTimer::*) 
> ()>::call (
>    this=0x81baa88) at timercallback.h:54
> #9  0x080d1754 in TimerCallback::call (this=0xbf831228) at  
> timercallback.h:121
> #10 0x080cf985 in Network::masterLoop (this=0x8160500) at net.cpp:266
> #11 0x080c000d in main (argc=3, argv=0xbf8313f4) at main.cpp:135
>
> The following daneel-ai file triggers it:
> ---------
> [Modules]
> basic
> mod-risk
>
> [Constraints]
> myplanet(int,int)
>
> [Rules]
> whoami(Me) and owner(P,Me) \ planet(P) and armies(P,N) <=>  
> myplanet(P,N)
> planet(P) and owner(P,-1) ==> order_colonise(P,1)
> myplanet(P,N) ==> print "Owning planet %i with %i troops" % (P,N)
>
> [Functions]
>
> ---------
> For clarity, the part between the ---'s should be put in a file and
> ran as "daneel-ai -f <filename>". This essentially places a colonise
> order on every neutral planet and prints out information about owned
> planets. Let me know if you need more information.
>
> Iwanowitch
> _______________________________________________
> tp-devel mailing list
> [email protected]
> http://www.thousandparsec.net/tp/mailman.php/listinfo/tp-devel

_______________________________________________
tp-devel mailing list
[email protected]
http://www.thousandparsec.net/tp/mailman.php/listinfo/tp-devel

Reply via email to