View Issue Details

IDProjectCategoryView StatusLast Update
0000888Dwarf FortressPathfindingpublic2011-03-23 13:02
Reporterdarkfred Assigned ToToady One  
PriorityhighSeveritycrashReproducibilitysometimes
Status resolvedResolutionduplicate 
Product Version0.31.03 
Fixed in Version0.31.22 
Summary0000888: Crash when creating a burrow with no area designated and adding dwarves.
DescriptionI added all my dwarves to a new burrow. Did not designate a location for this burrow. It immediately crashed on exiting the screen.
Steps To ReproduceSee DoctorZuber's note
A short, reproducible crash method is appended here
---
1. (w) (a) create burrow, define nothing
2. (esc) leave the screen
3. (m) (a) go to alerts
4. assign the alert to the burrow
5. crash
Tagsburrow, crash

Relationships

related to 0002412 resolvedToady One Crash when removing burrow 
parent of 0000092 closeduser6 Crashed on Burrows 
has duplicate 0003519 resolvedLogical2u Assign Civs to burrow with no area defined leads to crash 

Activities

user6

2010-04-09 11:11

  ~0002362

Does it reproduce if you try the same thing again?

darkfred

2010-04-09 11:20

reporter   ~0002363

I have been avoiding the creating of zero size burrows since then. I will do some tests tonight and see if I can reproduce it.

user11

2010-04-09 11:34

  ~0002365

It reproduces. I just made a burrow (without designating a size) and assigned the first 7 dwarves to it. After it started making announcements about job cancellations, it crashed.

DoctorZuber

2010-04-09 11:38

reporter   ~0002367

Reproduces here, but fiddling with this a bit more...

I created a burrow, added a citizen to it with c which did not immediately cause a crash. trying a few things going back and forth between burrows, adding more citizens, finally crashed after several tries. crashed when pressing (w) for the burrows screen.

I will try to isolate this more.

DoctorZuber

2010-04-09 12:03

reporter   ~0002374

Last edited: 2010-04-09 12:09

1. (w) (a) create burrow, define nothing
2. (esc) leave the screen
3. (m) (a) go to alerts
4. assign the alert to the burrow
5. crash

6. repeating 1-5 for consistency test causes the crash again.
7. retrying this several times reveals that a frame must pass before the crash occurs. pausing before doing these steps temporarily avoids the crash.

Trying another direction from scratch
8. (w) (a) as before, define burrow
9. (c) add a single citizen to the burrow
10. leave the screen and unpause -- No immediate crash. strange.
11. (w) (a) (c) add more citizens to the burrow.
12. again, no immediate crash. what's different here ?
13. shortly after saying this the game crashes. okay... now what?

Trying to isolate further...

14. (w) (a) as before, define burrow
15. (c) adding all seven citizens to burrow
16. leave the screen, unpause, crashes a very short time after unpausing.

17. repeating 14 to 16 several times consistently crashes within a few seconds of unpausing. Possible quirk of pathfinding altering the result slightly?

18. (w) (a) as before define burrow
19. (c) adding single citizen to burrow
20. leave screen, unpause, no crash... strange...
- 20a. looking closer reveals that my citizen (woodcutter) is stuck downstairs in the middle of a "store item in stockpile" task. Not quite what I was looking for, possible relation to 0000733
- 20b. deleting the burrow frees up the woodcutter to move normally.
- 20c. crashing again with 14-16 to reset my test area.

21. repeating 18-20 with a different citizen results in a crash within a few seconds as expected.
22. repeating this test generates a stuck mason with no-job

End of test

Conclusions
- as soon as a citizen tries to path to an undefined burrow, the game crashes.

- sometimes citizens fail to path prior to causing this crash. when this occurs they become stuck as described in 0000733.

slink

2010-07-11 08:48

reporter   ~0009934

I have information to add to this. ========================================================================
EXPERIMENT A
Steps:

1. Create a burrow and include in it all aboveground areas plus all excavated areas.
2. Put everyone in this burrow except a few individuals.
3. Create a second burrow but do not include any area in this burrow.
4. Let the game run for a time.

No crash results.
========================================================================
EXPERIMENT B
Steps:

1. Create a burrow and include in it all aboveground areas plus all excavated areas.
2. Put everyone in this burrow.
3. Create a second burrow but do not include any area in this burrow.
4. Put a few individuals into this burrow.
5. Let the game run for a time.

No crash results.
========================================================================
EXPERIMENT C
Steps:

1. Create a burrow and include in it all aboveground areas plus all excavated areas.
2. Put everyone in this burrow except a few individuals.
3. Create a second burrow but do not include any area in this burrow.
4. Put the individuals excepted from the first burrow into this one.

The game will crash almost immediately.
========================================================================
EXPERIMENT D
Steps:

1. Create a burrow and include in it all aboveground areas plus all excavated areas.
2. Put everyone in this burrow.
3. Let the game run for a time.
4. Create a second burrow but do not include any area in this burrow.
5. Put a few individuals into this one and simultaneously remove them from the first burrow.

The game will crash after some small delay, which is presumably the next time it updates the positions of those individuals who were removed from the common burrow and assigned to the burrow with no area.
========================================================================
EXPERIMENT E
Steps:

1. Create a burrow and include in it all aboveground areas plus all excavated areas.
2. Put everyone in this burrow except a few individuals.
3. Let the game run for a time.
4. Create a second burrow but do not include any area in this burrow.
5. Remove the burrow designation from a small area of the first burrow.
5. Put the individuals excepted above into the second burrow.
6. Let the game run.

The game will crash after a delay while spamming errors from pathing, even though there is an accessable burrow-free section.
========================================================================
CONCLUSION

When the game is forced to place Dwarves in a burrow with no defined area, it crashes. This only happens if they are assigned to only one burrow and that burrow has no area defined. If they are assigned to more than one burrow and one of those has an area, the game doesn't seem to have a problem. Providing an accessable burrow-free area does not remedy the problem although the symptoms are leading up to the crash may be slightly different in that case.

Link to fortress used in experiments:

http://dffd.wimbli.com/file.php?id=2655

Issue History

Date Modified Username Field Change
2010-04-09 11:07 darkfred New Issue
2010-04-09 11:10 user6 Relationship added parent of 0000092
2010-04-09 11:11 user6 Note Added: 0002362
2010-04-09 11:20 darkfred Note Added: 0002363
2010-04-09 11:34 user11 Note Added: 0002365
2010-04-09 11:38 DoctorZuber Note Added: 0002367
2010-04-09 11:55 user6 Reproducibility have not tried => sometimes
2010-04-09 12:03 DoctorZuber Note Added: 0002374
2010-04-09 12:09 DoctorZuber Note Edited: 0002374
2010-04-09 12:15 Kennel Tag Attached: burrows
2010-04-09 12:15 Kennel Tag Attached: crash
2010-04-09 12:16 Kennel Tag Attached: burrow
2010-04-09 12:16 Kennel Tag Detached: burrows
2010-04-30 16:43 Logical2u Product Version => 0.31.03
2010-04-30 16:43 Logical2u Steps to Reproduce Updated
2010-06-21 11:17 user6 Relationship added related to 0002412
2010-07-11 08:48 slink Note Added: 0009934
2010-11-05 15:32 Logical2u Relationship added has duplicate 0003519
2011-03-19 16:46 Toady One Status new => resolved
2011-03-19 16:46 Toady One Fixed in Version => 0.31.22
2011-03-19 16:46 Toady One Resolution open => fixed
2011-03-19 16:46 Toady One Assigned To => Toady One
2011-03-23 13:02 user6 Resolution fixed => duplicate