Page 1 of 1

Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 23 May 2007, 11:04
by borgcube
Warzone2100 Version
2.0.6
SVN - revision 1328

Operating System
Gentoo Linux x86_64

Hardware Information
AMD64 2800+
ATI Radeon 9600 (RV350AQ)
SB Audigy LS
Asus K8N motherboard

Warzone2100 Configuration
http://rafb.net/p/O28AsP27.html

Bug Description
When I try to load attached save-game 2 things occur:
1. the game loads without the hex-menu in the lower left
2. the game crashes about half a minute later: i click the blinking button in the top left to make the transport continue and on the new map the game crashes with
Code: Select all
~ $ warzone2100
error   : widgSetButtonState: Couldn't find button/click form from ID
error   : Assert in Warzone: widget.c:1213 : widgSetButtonState (FALSE), last script event: 'startEvnt'
warzone2100: widget.c:1213: widgSetButtonState: Assertion `(0)' failed.
warzone2100: No such file or directory.
Saved dump file to '/tmp/warzone2100.gdmp'
Aborted


This issue is reproducible, spitting out
http://rafb.net/p/XUBr1457.html
http://rafb.net/p/UhhPki92.html

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 23 May 2007, 18:07
by Giel
It seems you've compiled without debuging symbols or simply stripped your binary. This means both of those dumps are useless to us (the one in your skirmish report included). Could you try to recompile with CFLAGS=-g on the configure line.

E.g.:
Code: Select all
CFLAGS=-g ./configure your-other-config-options-go-here


PS Updating to r1329 should also work, since I've now enabled debugging symbols for all builds. (So a simple ./configure should do just fine)

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 23 May 2007, 20:59
by borgcube
Ok, so I'll just recompile the new version and everything will be alright?

PS: My compiler's flags are set to
Code: Select all
CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="$CFLAGS"
LDFLAGS="-Wl,-O1"
Is that alright? Or will I have to use another setup here?

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 23 May 2007, 22:02
by Giel
borgcube wrote:Is that alright? Or will I have to use another setup here?

Should be good in combination with my change in r1329.

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 23 May 2007, 23:41
by borgcube
ok.
here comes a new trace.

seems like the widget-stuff is not causing segfaults anymore, still it crashes pretty soon in this mission. but apparently i don't get the hex-menu the first time i load *any* campaign-savegame. also the resource bar at the bottom is missing.

console output:
http://rafb.net/p/LLNBTY45.html

backtrace:
http://rafb.net/p/8AtEJ626.html

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 25 May 2007, 04:46
by borgcube
ah, well, finally enabled proper backtracing.
and with devurandom's help i tried some tracing myself.

1. description:
- i load earlier attached savegame
- game gets loaded but without the hex-menu (lower left) and the energy bar
- i reload attached savegame
- game gets loaded with the hex-menu but still without the energy bar
- i hit the fly button in the top left and the transport leaves for the next map
- i order any unit to fire somewhere and the game crashes on projectile impact (which is not drawn)

2. attempt to trace the issue:
#3  0x0000000000566d9d in pie_Draw3DShape2 (shape=0x0  [...] at piedraw.c:347
was the starting point. finally i ended up with that code block:

Code: Select all
   if(GetGameMode() == GS_NORMAL)
      {

         psStats->pMuzzleGraphic = (iIMDShape *) resGetData("IMD", muzzleGfx);
         if (psStats->pMuzzleGraphic == NULL)
         {
            debug( LOG_ERROR, "Cannot find the muzzle PIE for record %s", getStatName(psStats) );
            abort();
            return FALSE;
         }


         psStats->pInFlightGraphic = (iIMDShape *) resGetData("IMD", flightGfx);
         if (psStats->pInFlightGraphic == NULL)
         {
            debug( LOG_ERROR, "Cannot find the flight PIE for record %s", getStatName(psStats) );
            abort();
            return FALSE;
         }

         psStats->pTargetHitGraphic = (iIMDShape *) resGetData("IMD", hitGfx);
         if (psStats->pTargetHitGraphic == NULL)
         {
            debug( LOG_ERROR, "Cannot find the target hit PIE for record %s", getStatName(psStats) );
            abort();
            return FALSE;
         }

         psStats->pTargetMissGraphic = (iIMDShape *) resGetData("IMD", missGfx);
         if (psStats->pTargetMissGraphic == NULL)
         {
            debug( LOG_ERROR, "Cannot find the target miss PIE for record %s", getStatName(psStats) );
            abort();
            return FALSE;
         }

         psStats->pWaterHitGraphic = (iIMDShape *) resGetData("IMD", waterGfx);
         if (psStats->pWaterHitGraphic == NULL)
         {
            debug( LOG_ERROR, "Cannot find the water hit PIE for record %s", getStatName(psStats) );
            abort();
            return FALSE;
         }
         //trail graphic can be null
         if (strcmp(trailGfx, "0"))
         {
            psStats->pTrailGraphic = (iIMDShape *) resGetData("IMD", trailGfx);
            if (psStats->pTrailGraphic == NULL)
            {
               debug( LOG_ERROR, "Cannot find the trail PIE for record %s", getStatName(psStats) );
               abort();
               return FALSE;
            }
         }
         else
         {
            psStats->pTrailGraphic = NULL;
         }
      }


Extending the if-check to GS_SAVEGAMELOAD apparently fixes that issue.


PS: 2 dumps of that issue:
http://rafb.net/p/zfnz5y95.html
http://rafb.net/p/HKWfXN30.html

PPS: Attached is proposed patch.

PPPS: The issue with missing Hex-Menu (on first load) and missing energy-bar (on any campaign savegameload) remains.

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 25 May 2007, 12:16
by DevUrandom
I can't even load that savegame:
(gdb) p psSaveDroid->numWeaps
$2 = 4281295360

That really is not a sane amount...

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 25 May 2007, 21:52
by borgcube
ok. as you told me, i completely removed the parenting if-conditions and left the child-if-conditions alone. seems to run fine without any problems. seems to be just an extra-mile for the software.

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 26 May 2007, 16:02
by DevUrandom
This should be fixed in r1347.
The problem was that before my mainloop refactoring the gamemode was set to GS_NORMAL when loading a savegame. The GS_SAVEGAMELOAD status was only used to enter savegameloading, but reset as soon as the real loading started.
I reverted to the original behavior.

Re: Missing hex-menu on saved game load (campaign), crash soon afterwards

PostPosted: 26 May 2007, 16:39
by UrbanVoyeur
borgcube wrote:PPPS: The issue with missing Hex-Menu (on first load) and missing energy-bar (on any campaign savegameload) remains.


I've seen the missing energy bar on loading games saved under previous trunk versions for some time (since 127x), plus a boatload of other crashes,  but I assumed it was because of changes that made games saved under earlier versions incompatible, since new games did not exhibit these behaviors.