View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0000853 | Spring engine | General | public | 2008-02-16 02:02 | 2008-04-08 16:30 | ||||
Reporter | LordMatt | ||||||||
Assigned To | tvo | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0000853: Give a transport an unload order on the edge of the map with .76b1 and spring crashes | ||||||||
Description | Give a transport an unload order on the edge of the map with .76b1 and spring crashes. No stacktrace is produced on Linux or Windows. Tested with arm atlas (BA 6.1) on the right side of comet catcher. You have to give the order exactly on the edge for it to work. | ||||||||
Tags | No tags attached. | ||||||||
Checked infolog.txt for Errors | |||||||||
Attached Files |
|
![]() |
|
Kloot (developer) 2008-02-23 20:51 |
Unable to reproduce as of r5525, can you upload a demo showing this crash with SVN Spring? |
LordMatt (reporter) 2008-02-23 21:23 Last edited: 2008-02-23 21:24 |
Uploaded a demo of crash with r5526. Dunno if it is corrupted or what, however. It can be somewhat hard to get to work. I had to spam unload commmands near the edge before the crash happened. |
Auswaschbar (reporter) 2008-02-24 11:11 |
There seems to be an infinite loop in CTransportCAI::FindEmptySpot: #1 0x086fecab in CTransportCAI::FindEmptySpot () #2 0x086ff896 in CTransportCAI::UnloadUnits_Land () 0000003 0x086ffa2a in CTransportCAI::ExecuteUnloadUnits () 0000004 0x08700e1d in CTransportCAI::SlowUpdate () 0000005 0x087166a0 in CCommandAI::GiveAllowedCommand () #6 0x08708a9e in CMobileCAI::GiveCommandReal () #7 0x08714e85 in CCommandAI::GiveCommand () I continued and interrupted several times, it never goes past the FindEmptySpot (). Of course it didn't react to any user input. |
Flaamwing (reporter) 2008-04-02 06:20 |
The loop checking for a random location within the drop radius cycles in an infinite loop as Auswaschbar mentioned. The following patch fixes it, and prevents the command from being queued if the location is invalid, so that the unit doesnt get loaded and sit there with the user thinking that it will eventually be unloaded. Attaching the patch that fixes this. |
LordMatt (reporter) 2008-04-03 00:25 |
Great! Now if only I knew enough C++ to be able to judge that it works I would apply it. :P |
Flaamwing (reporter) 2008-04-05 00:35 |
Not actually that much C++ involved :) But, np. Can wait for another dev to test it... It certainly worked for me :P |
tvo (reporter) 2008-04-08 16:30 |
Committed in r5681, thank you Flaamwing! I slightly modified it btw; multiplying stuff by 1 seemed a bit pointless (in the bounds check), and I added a check for if the transported list is empty in your CTransportCAI::AllowedCommand method, to prevent crash if ever the list is empty when that method is called (possibly that never happens atm though). |
![]() |
|||
Date Modified | Username | Field | Change |
---|---|---|---|
2008-02-16 02:02 | LordMatt | New Issue | |
2008-02-23 20:51 | Kloot | Note Added: 0001980 | |
2008-02-23 20:52 | Kloot | Status | new => feedback |
2008-02-23 21:23 | LordMatt | File Added: unnamed.sdf | |
2008-02-23 21:23 | LordMatt | Note Added: 0001983 | |
2008-02-23 21:24 | LordMatt | Note Edited: 0001983 | |
2008-02-24 11:11 | Auswaschbar | Note Added: 0001984 | |
2008-04-02 06:20 | Flaamwing | Note Added: 0002022 | |
2008-04-02 06:21 | Flaamwing | File Added: airunload.patch | |
2008-04-03 00:25 | LordMatt | Note Added: 0002028 | |
2008-04-05 00:35 | Flaamwing | Note Added: 0002033 | |
2008-04-08 16:26 | tvo | Status | feedback => assigned |
2008-04-08 16:26 | tvo | Assigned To | => tvo |
2008-04-08 16:30 | tvo | Status | assigned => resolved |
2008-04-08 16:30 | tvo | Resolution | open => fixed |
2008-04-08 16:30 | tvo | Note Added: 0002036 |