View Issue Details

IDProjectCategoryLast Update
0001190AI War 1 / ClassicCrash/ExceptionJan 3, 2011 11:45 am
ReporterToll Assigned ToChris_McElligottPark  
Status closedResolutionunable to reproduce 
Product Version4.028 
Summary0001190: Crash when the AI empties too many barracks at once
DescriptionI attacked a planet with eight barracks of 200 ships each, and destroyed its command station (this was 19 hours in, and the planet had been untouched with a Dyson Sphere Golem). The result wasn't quite what I expected: Instead of a massive wave, I got a fatal error in gc: Too many heap sections. After clicking OK in the dialogs, the game became unresponsive and had to be forcefully closed.
TagsNo tags attached.
Internal Weight

Activities

Chris_McElligottPark

Nov 8, 2010 4:52 pm

administrator   ~0002977

Most likely this was a coincidence, and you simply ran over the memory limit in general. Certainly these pushed you over, obviously, but 1000 ships in general shouldn't do that. Unless this is something reproducible, that is, which would indicate some sort of infinite loop or something. Do you have a save which can reproduce this?

keith.lamothe

Nov 8, 2010 4:52 pm

administrator   ~0002978

Please tell me you can post a save from before destroying the command station :)

Toll

Nov 8, 2010 4:55 pm

reporter   ~0002980

I do have an autosave from a few minutes earlier... I'll play it up to the point where I'm sending in my bombers and save it just before.

Toll

Nov 8, 2010 4:59 pm

reporter  

Before heap crash.sav (983,823 bytes)

Toll

Nov 8, 2010 5:00 pm

reporter   ~0002981

Okay, the save is up, and there are quite a few bombers at Fener. It didn't crash this time around, but maybe you can dig something else up...

Lancefighter

Nov 8, 2010 5:07 pm

reporter   ~0002984

I was under the impression that never more than one barracks (per system) would be created nowadays? (the rest become carriers, right?)

Chris_McElligottPark

Nov 8, 2010 5:09 pm

administrator   ~0002985

That's true, but from any older saves pre-carriers there could still be many barracks sitting around.

Toll, from the sound of it you just got pushed over the memory limit, unfortunately.

Toll

Nov 8, 2010 5:10 pm

reporter   ~0002986

Yeah, me too... but there were carriers created as well (or at least it said it created carriers; I honestly never noticed them). I figured it was one barracks per guard post, since those numbers match (six normal guard posts and two wormhole guard posts on that planet).

Toll

Nov 8, 2010 5:30 pm

reporter   ~0002993

Oh, and regarding the "only one barrack"... this game was started only a few days ago; it's definitely post-carrier.

Chris_McElligottPark

Nov 8, 2010 5:45 pm

administrator   ~0002997

Yeah, I realized that a bit ago -- turns out carriers were always being created as barracks, but the 4.030 version I just put out fixes that. :)

So, there should never be this many barracks in the future anyway, and I think it was a general out of memory thing to begin with, so for now I'm marking this as unable to reproduce as I don't think it's a specific bug related to barracks or anything like that.

Toll

Nov 8, 2010 5:48 pm

reporter   ~0002999

Right. Me having played for about 12-14 game hours might've contributed a bit as well ;) Yay for +10 speed.

Chris_McElligottPark

Nov 8, 2010 6:21 pm

administrator   ~0003004

Wow, that might do it, yeah. It shouldn't do that, but playing on +10 speed would actually make it a bit more likely to eventually do that, because it's going to be longer between Garbage Collections in terms of gametime, which means "transient objects" have a larger impact on overall memory footprint.

We could probably solve some of this by having it do a Garbage Collection right before it does a big wave or anything else that spawns a lot of ships, but actually as we get the transient memory usage down over time that should be a decreasing issue and ultimately this should never happen even now except with super long gametimes, possibly on extra-fast usages, or with incredibly high ship counts (High ship count and large maps is a recipe for possible out of memory errors after a few hours in a single sitting).

Anywho, that's stuff that's gradually improving, and it's pretty rare already. It's good to hear yours was definitely in the realm of the unusual with that, though. :)

TechSY730

Nov 8, 2010 7:32 pm

reporter   ~0003022

Last edited: Nov 8, 2010 7:33 pm

Wait a second, this version of Mono's garbage collector can only collect so much per collection? I think that is a pretty big flaw. :P

Chris_McElligottPark

Nov 9, 2010 9:08 am

administrator   ~0003056

No, that's not what I meant. What I meant was that if it's about to run critically out of RAM, and could run a garbage collection to have HUNDREDS of megabytes of actual working space, it won't do so and will instead die with the Too Many Heap Sections error.

A different, but no less big, flaw. That means that we have to make sure we GC collect right before anything that allocates a large amount of temporary memory, or if it happens to be near the redline on a given computer at the time, it can push itself over the limit without even bothering to try to save itself.

Issue History

Date Modified Username Field Change
Nov 8, 2010 4:49 pm Toll New Issue
Nov 8, 2010 4:52 pm Chris_McElligottPark Note Added: 0002977
Nov 8, 2010 4:52 pm Chris_McElligottPark Assigned To => Chris_McElligottPark
Nov 8, 2010 4:52 pm Chris_McElligottPark Status new => feedback
Nov 8, 2010 4:52 pm keith.lamothe Note Added: 0002978
Nov 8, 2010 4:55 pm Toll Note Added: 0002980
Nov 8, 2010 4:55 pm Toll Status feedback => assigned
Nov 8, 2010 4:59 pm Toll File Added: Before heap crash.sav
Nov 8, 2010 5:00 pm Toll Note Added: 0002981
Nov 8, 2010 5:07 pm Lancefighter Note Added: 0002984
Nov 8, 2010 5:09 pm Chris_McElligottPark Note Added: 0002985
Nov 8, 2010 5:10 pm Toll Note Added: 0002986
Nov 8, 2010 5:30 pm Toll Note Added: 0002993
Nov 8, 2010 5:45 pm Chris_McElligottPark Note Added: 0002997
Nov 8, 2010 5:45 pm Chris_McElligottPark Status assigned => resolved
Nov 8, 2010 5:45 pm Chris_McElligottPark Resolution open => unable to reproduce
Nov 8, 2010 5:48 pm Toll Note Added: 0002999
Nov 8, 2010 6:21 pm Chris_McElligottPark Note Added: 0003004
Nov 8, 2010 7:32 pm TechSY730 Note Added: 0003022
Nov 8, 2010 7:33 pm TechSY730 Note Edited: 0003022
Nov 9, 2010 9:08 am Chris_McElligottPark Note Added: 0003056
Jan 3, 2011 11:45 am Chris_McElligottPark Status resolved => closed
Apr 14, 2014 9:27 am Chris_McElligottPark Category Bug - Crash or Exception => Crash/Exception