Help with colonisation, invasion bug replication

Problems and solutions for installing or running FreeOrion, including discussion of bugs if needed before posting a bug report. For problems building from source, post in Compile.
Post Reply
Message
Author
rallytoshelly
Krill Swarm
Posts: 10
Joined: Wed Jun 27, 2018 7:40 am

Help with colonisation, invasion bug replication

#1 Post by rallytoshelly » Tue Jul 03, 2018 3:48 am

Hi,

RE: FreeOrionCH v0.4.8 (Linux)
[build 2018-06-14.3f22a75] CMake

I am trying to nail down a bug report for 0.4.8. Sometimes when I hit the invasion or establish outpost etc button between turns, ie after the end turn button has been pressed, but before the next turn has begun, I get the following behaviour:

- Turn begins and invasion/colonisation button then becomes available again
- If the button is pressed during the following turn, this action can no longer be performed on the planet, invasion etc is always unsuccessful from that point on, ship remains in the system.
- If the ship performing the action on the planet is destroyed and a new ship is brought in, the new ship cannot invade etc either.
- If the button is not pressed during the following turn, the player is presented with a cancel button after the next turn (2 turns after initial attempt)
- If the player cancels and attempts to repeat the action, the action can be performed on the planet as per normal.
- If the player waits several turns before revisiting the planet, the cancel button must be pressed as many times as turns have passed in order for the action to be performed as usual.

This is a bit of a late game bug as it is very difficult to attempt to perform the action between turns in a small galaxy or at the beginning of the game, as the time between turns is quite short. As the time between turns increases, so does the chances that the player will attempt to perfom actions between turns.

My sources were downloaded from Sourceforge and did not include the .git directory, so I am unable to currently replicate this bug very easily in the latest version, as I have limited Internet access.

I do have a save game where this bug is present.

I am currently unaware as to which part of the interim between turns is responsible for the bug.

If someone coud replicate this bug and provide more info it would be very helpful.

Thanks.

rallytoshelly
Krill Swarm
Posts: 10
Joined: Wed Jun 27, 2018 7:40 am

Re: Help with colonisation, invasion bug replication

#2 Post by rallytoshelly » Tue Jul 03, 2018 4:52 am

Here is an archive containing an uncompressed save file with the issue present.
Attachments
warandpeace.sav.tar.bz2
Save file containing colonisation bug.
(2.7 MiB) Not downloaded yet

User avatar
Dilvish
AI Lead, Programmer
Posts: 4683
Joined: Sat Sep 22, 2012 6:25 pm

Re: Help with colonisation, invasion bug replication

#3 Post by Dilvish » Tue Jul 03, 2018 3:39 pm

rallytoshelly wrote:Sometimes when I hit the invasion or establish outpost etc button between turns, ie after the end turn button has been pressed, but before the next turn has begun
I don't have time to dig through the details right now, but this part caught my eye.

There is a bit of a sloppy aspect to the UI right now in how it handles that initial portion of a turn, in that for a short period the UI will look & act as if you can enter a variety of orders, but until the post-combat update arrives any such order attempts won't "stick". It can still be useful to click on systems and see (or remind yourself) what's there during that time.

We should get around to making the Map Window (well, all the main windows, really) aware of the current stage of turn processing, so that it doesn't even let you try to enter orders at a time when they would just get discarded. Feel free to open an Issue about that on github.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 12246
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Help with colonisation, invasion bug replication

#4 Post by Geoff the Medio » Tue Jul 03, 2018 4:26 pm

Dilvish wrote:We should get around to making the Map Window (well, all the main windows, really) aware of the current stage of turn processing, so that it doesn't even let you try to enter orders at a time when they would just get discarded.
Some parts of the UI already do get disabled and re-enabled during turn processing, in part to avoid orders being issued when they can't be / won't stock. Definitely needs improvement, though.

rallytoshelly
Krill Swarm
Posts: 10
Joined: Wed Jun 27, 2018 7:40 am

Re: Help with colonisation, invasion bug replication

#5 Post by rallytoshelly » Tue Jul 03, 2018 5:45 pm

The curious thing was that the order didn't get discarded, it became unavailable if repeated in the next turn, and then the error started stacking itself somehow.

I think I was able to trigger this as I am playing on relatively low end hardware.

Greying out the ability to trigger the order at this time would solve this issue, though, sorry for the long post. I found this one tricky to explain. I was able to trigger this problem a couple of times, but not determine exactly which part of the new turn sequence it emerged. Possibly I could use an even slower computer :)

phocas
Space Floater
Posts: 34
Joined: Sat May 12, 2018 9:28 am

Re: Help with colonisation, invasion bug replication

#6 Post by phocas » Tue Jul 03, 2018 6:14 pm

rallytoshelly wrote:The curious thing was that the order didn't get discarded, it became unavailable if repeated in the next turn, and then the error started stacking itself somehow.

I think I was able to trigger this as I am playing on relatively low end hardware.

Greying out the ability to trigger the order at this time would solve this issue, though, sorry for the long post. I found this one tricky to explain. I was able to trigger this problem a couple of times, but not determine exactly which part of the new turn sequence it emerged. Possibly I could use an even slower computer :)
i saw the same thing
there is a refresh state in the middle of the turn calculation. you can click on the invasion button or on some ships move with a weird result.
the autosaved turn file is damaged and store the bad state. restarting is not a solution.
you have to start back form the preceding turn N-1 to clean the things

phocas
Space Floater
Posts: 34
Joined: Sat May 12, 2018 9:28 am

Re: Help with colonisation, invasion bug replication

#7 Post by phocas » Tue Jul 03, 2018 7:57 pm

last turn the troop ships were 1 tun movement from their target
during the turn calculation there was the "refresh" and the troop ships moved to their target raising the "invasion button"
so i pushed the button before the turn start

found in freeorion.log

Code: Select all

 
21:15:21.323824 [debug] timer : ScopedTimer.cpp:179 : MapWnd::InitTurn - refresh production wnd time:       38 ms
21:15:21.323849 [debug] timer : ScopedTimer.cpp:179 : MapWnd::InitTurn - refresh indicators     time:       14 ms
21:15:21.323879 [debug] timer : ScopedTimer.cpp:179 : MapWnd::InitTurn - dispatch exploring     time:     3719 µs
21:15:21.323905 [debug] timer : ScopedTimer.cpp:189 : MapWnd::InitTurn                          time:     3872 ms
21:15:21.405220 [debug] timer : ScopedTimer.cpp:34 : SidePanel::RefreshImpl time:       34 ms
21:15:21.425133 [debug] timer : ScopedTimer.cpp:34 : SidePanel::RefreshImpl time:       19 ms
21:15:22.833708 [debug] FSM : HumanClientFSM.cpp:953 : Sending Save Game Data to Server
21:15:22.899897 [debug] FSM : HumanClientFSM.cpp:1048 : (PlayerFSM) PlayingGame::DispatchCombatLogs message received
21:15:22.900012 [debug] client : HumanClientApp.cpp:1005 : HCL Update Combat Logs
>>>
21:15:35.527074 [error] client : Order.cpp:668 : InvadeOrder::UndoImpl ship is not about to invade planet
...
21:15:39.975999 [error] client : Order.cpp:668 : InvadeOrder::UndoImpl ship is not about to invade planet
<<<
21:15:40.000465 [debug] timer : ScopedTimer.cpp:34 : RotatingPlanetControl::Refresh time:     1388 µs
21:15:40.312476 [error] client : Order.cpp:668 : InvadeOrder::UndoImpl ship is not about to invade planet
21:15:40.312611 [error] client : Order.cpp:668 : InvadeOrder::UndoImpl ship is not about to invade planet
21:15:42.109890 [debug] client : MapWnd.cpp:5502 : PlotFleetMovement 
21:15:43.257773 [debug] client : Universe.cpp:1478 : Issue times: planet species: 0.239 ship species: 1.126 specials: 4.709 techs: 40.974 buildings: 3.624 hulls/parts: 5.993 fields: 0.565
21:15:43.257870 [debug] client : Universe.cpp:1485 : Evaluation time: 249.244 reorder time: 0.494
21:15:43.264977 [debug] timer : ScopedTimer.cpp:34 : Universe::ExecuteEffects time:     4268 µs
21:15:43.265193 [debug] timer : ScopedTimer.cpp:34 : Universe::UpdateMeterEstimatesImpl on 21 objects time:      145 ms
21:15:43.325760 [debug] timer : ScopedTimer.cpp:34 : SidePanel::RefreshImpl time:       59 ms
21:15:43.363873 [debug] timer : ScopedTimer.cpp:34 : SidePanel::RefreshImpl time:       38 ms
21:15:43.983407 [debug] client : MapWnd.cpp:5502 : PlotFleetMovement 
from freeoriond.log

Code: Select all

21:15:19.033854 [debug] IDallocator : IDAllocator.cpp:283 : Serialize IDAllocator()  server id = -1 empire id = 19
21:15:19.033885 [debug] IDallocator : IDAllocator.cpp:341 : Serialized [empire = 19 next id = 30769, ]
21:15:19.066250 [debug] server : SerializeUniverse.cpp:152 : Universe::serialize : serializing 18 types of statistic
21:15:19.066344 [debug] server : SerializeUniverse.cpp:154 : Universe::serialize : serializing done
21:15:19.066383 [debug] server : SerializeUniverse.cpp:157 : Universe::serialize : Cleaning up temporary data
21:15:19.067601 [debug] server : SerializeUniverse.cpp:173 : Universe::serialize done
21:15:19.089434 [debug] server : ServerApp.cpp:3397 : ServerApp::PostCombatProcessTurns done
21:15:19.089548 [debug] timer : ScopedTimer.cpp:34 : ServerApp::PostCombatProcessTurns time:    20237 ms
21:15:19.104175 [debug] FSM : ServerFSM.cpp:2130 : (ServerFSM) PlayingGame::RequestCombatLogs message received
21:15:19.105757 [debug] server : ServerApp.cpp:985 : UpdateCombatLogs returning 8 logs to player 1
21:15:22.848761 [debug] server : Message.cpp:1040 : deserializing orders
21:15:22.849032 [debug] server : Message.cpp:1042 : checking for ui data
21:15:22.849088 [debug] server : Message.cpp:1045 : deserializing UI data
21:15:22.849809 [debug] server : Message.cpp:1048 : checking for save state string
21:15:22.850047 [debug] FSM : ServerFSM.cpp:2605 : Finished ClientSaveData from outside of if.
....
21:16:17.802957 [debug] FSM : ServerFSM.cpp:2605 : Finished ClientSaveData from outside of if.
21:16:23.882848 [debug] server : Message.cpp:1040 : deserializing orders
21:16:23.893041 [debug] server : Message.cpp:1042 : checking for ui data
21:16:23.893720 [debug] server : Message.cpp:1048 : checking for save state string
21:16:23.893993 [debug] server : Message.cpp:1051 : deserializing save state string
21:16:23.898089 [debug] server : SaveLoad.cpp:114 : SaveGame(zlib-xml) filename: /home/phocas/.local/share/freeorion/save/auto/FreeOrion_Joueur_Empire_0232_20180703_211517.sav
21:16:23.898205 [debug] server : SaveLoad.cpp:117 : Compiling save empire and preview data
21:16:23.898691 [debug] server : SaveLoad.cpp:182 : Allocating buffers for XML serialization...

Post Reply