Assertion waitcmd_ == IGPCMD_GAME_OPEN on WIN10

Bug #1704449 reported by Klaus Halfmann
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
widelands
Fix Released
Undecided
Unassigned

Bug Description

Running on WIndow 10 HOME I get the attached Assertion in some Popup when entering a network game.
I can skip the Assertion with out any noticalbe effect:

This is a debug buld from appveyor (still cannot build locally)
_widelands_dev_widelands_bug_1687100_reveal_fields-2268_Debug_x86 (Debug)

should it not be possible to have an IPv6 connection now?, the newtowrk should support it:

   Verbindungsspezifisches DNS-Suffix: Speedport_W_921V_1_43_000
   IPv6-Adresse. . . . . . . . . . . : 2003:de:2bce:f3c3:a55f:7cad:63a5:eb74
   IPv6-Adresse. . . . . . . . . . . : fd59:f0c0:a3bc:ff0:a55f:7cad:63a5:eb74
   Temporäre IPv6-Adresse. . . . . . : 2003:de:2bce:f3c3:d56d:c838:28a3:d362
   Temporäre IPv6-Adresse. . . . . . : fd59:f0c0:a3bc:ff0:10f4:7111:14b2:2550
   Temporäre IPv6-Adresse. . . . . . : fd59:f0c0:a3bc:ff0:d56d:c838:28a3:d362
   Verbindungslokale IPv6-Adresse . : fe80::a55f:7cad:63a5:eb74%11
   IPv4-Adresse . . . . . . . . . . : 192.168.254.23
   Subnetzmaske . . . . . . . . . . : 255.255.255.0
   Standardgateway . . . . . . . . . : fe80::1%11
                                       192.168.254.16

Tags: crash network

Related branches

Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :
Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :
GunChleoc (gunchleoc)
tags: added: crash network
Changed in widelands:
assignee: nobody → Notabilis (notabilis27)
milestone: none → build20-rc1
Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :

maybe I must investigate into the WIN10 firewall, I think this once was possible on OSX,
with the same router

Revision history for this message
Notabilis (notabilis27) wrote :

From the stdout.txt it looks like it is indeed a problem with your router or your windows firewall. Outgoing IPv6-connections are working fine but incoming connections are blocked somewhere.
The related delay/timeout we encountered when I tried to connect to your game should be fixed now (was a bug in the metaserver). If you encounter any more timeouts, please give a description what you are doing to trigger them.

The failed assert is still a problem. From the code it looks like it can not fail but obviously it does. Do you know of any way to trigger it on purpose? Either way an exact description what you were doing when it happened would be helpful. The more detailed you can describe it, the better. Has anything (unusual) happened before (former connections to the metaserver? Timeouts? Crashes of the game and assert-failure after restart?)?

Also, there is the line "logout(WRONG_INFORMATION)" in your stdout.txt. This is really strange, since it would mean that your game tried to reconnect to the metaserver with other information (username, version, ...) then on its first connect. Another thing which should not be possible...

Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :

OK, Now it happend again for Version master-2253_Debug_x64 (Debug)
I happend while the game was loading, rhe first sond was played,
the map just became visible.

I played the same verosn before but did not see this since now.

My Network setup did not change, AFAI can tell.

Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :

Looks like notabilis found it ut depends on the
time from inside/entering the lobby into the final game.
Is this is to fast (5 sec / 5min?) the asseertin will
be triggered. I provoked it tow times now, wating for
the test without assertion ....

Revision history for this message
Notabilis (notabilis27) wrote :

Generally, a firewall has three choices when receiving a network packet: Forward it, send back a reject or silently drop the packet. In the first case, the metaserver (and others) can reach the game and everything is fine. In the second case the metaserver tries to connect, receives a message that he isn't permitted to do so and can continue. What we had here is the third case: The firewall (or router or whatever) is silently dropping the ping of the metaserver. Since the metaserver does not know this, he has to wait for some timeout before he can continue and send the GAME_OPEN message.

When the game has already started in that time the game client no longer expects the message, so waitcmd_ has already been set to another value and the assert fails. We could reduce the probability of this error by checking whether the game started before sending the message. But we can't completely avoid it that way. So in my opinion the assert is wrong. Based on that, I pushed a branch which removes the assert.
If someone has a better idea, just say so. But when we add a relay server this message can be removed anyway, so I don't see much sense in a complicated fix.

As an unimportant side note: Does it make any sense pinging already started games? Other players can't do anything with these games anyway.

Notabilis (notabilis27)
Changed in widelands:
status: New → Confirmed
Revision history for this message
GunChleoc (gunchleoc) wrote :

Would we need to ping already started games if we ever implement late joins? Depending on how far along this is non the horizon, we might keep the code then. Otherwise, let's get rid of anything that's not needed.

Changed in widelands:
status: Confirmed → Fix Committed
Revision history for this message
Notabilis (notabilis27) wrote :

When we implement late joins we are most likely already using a network relay on the metaserver. With the relay, this ping-code will be no longer needed and can be removed. But since it does no harm and I might overlook something, I would leave it in until then.

Revision history for this message
GunChleoc (gunchleoc) wrote :

Sounds good to me.

Revision history for this message
GunChleoc (gunchleoc) wrote :

Fixed in build20-rc1

Changed in widelands:
assignee: Notabilis (notabilis27) → nobody
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.