Zandronum Chat on our Discord Server Get the latest version: 3.1
Source Code

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002033Zandronum[All Projects] Bugpublic2014-12-22 20:222018-09-30 23:10
ReporterLeonard 
Assigned ToTorr Samaho 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformMicrosoftOSWindowsOS VersionXP/Vista/7
Product Version1.3 
Target Version1.4Fixed in Version2.0 
Summary0002033: Problems while in "requesting snapshot" state.
DescriptionThe client loads the map before requesting a snapshot.
This is problematic because the map will be loaded but the client won't have a body yet until he actually receives the snapshot.
Because of this, while being in the "requesting snapshot" state, you can hide the console by bringing the menu (gamestate set to GS_LEVEL) and it will cause a massive HOM.
Even worse is if after that you open the automap, you instantly crash.
You don't even need to open up the menu to get a HOM, if you have con_alpha < 1, a HOM will always appear and it's even worse for people like me who have con_alpha set to 0: instant full screen HOM everytime you connect.
Additional InformationI thought myself how we could fix this issue:
-Setting the gamestate to GS_FULLCONSOLE again might not even work and could cause problems.
-Setting gameaction to bring the fullconsole won't fix the problem since the console will still have alpha applied to it.
-Making the client spawn on himself while waiting for the snapshot sounds like a total mess.

Here's the solution I've come up with:
Load the map in client_BeginSnapshot instead.

I tested this myself and it works flawlessly.
I will make a pull request shortly after making this ticket.
Attached Files

- Relationships

-  Notes
User avatar (0011085)
Leonard (developer)
2014-12-22 20:37

'https://bitbucket.org/Torr_Samaho/zandronum-stable/pull-request/117/fixed-the-client-could-potentially-crash/diff [^]'
User avatar (0011087)
Torr Samaho (administrator)
2014-12-23 20:49

Thanks for your patch! I don't think that moving the map loading to the beginning of the snapshot is the proper strategy though. I expect this to make it even more difficult for the client to join large maps. The problem is that the server will be sending a large amount of packets in the snapshot, but the client will be completely blocked from receiving packets while loading the map. The reason for the old way was to give the client time to load the map, before the server sends all the information.

Nevertheless, what you report is a bug and definitely should be fixed. A better way to fix this, would be to properly prevent the client from rendering the map before the snapshot is fully received. "viewactive = false;" is supposed to take care of this, but apparently it doesn't work as intended.
User avatar (0011088)
Leonard (developer)
2014-12-24 16:31

I see.
I thought it was a good idea since the same thing happens with normal map changes (server_AuthenticateLevel) where the server tells the client to load the map at the same time it sends the snapshot.
User avatar (0011110)
Leonard (developer)
2014-12-28 21:46

Updated the pull request.
User avatar (0011111)
Torr Samaho (administrator)
2014-12-28 21:49

Thanks, looks much better! I'll have to look at this in detail and will report back or pull right away.
User avatar (0011127)
Leonard (developer)
2014-12-29 15:14

I just realised this doesn't apply to client demos.
Will update the pull request in a short while.
User avatar (0011130)
Torr Samaho (administrator)
2014-12-29 17:21

Please see my bibucket comment on how to shorten the code. Other than that, the patch looks good.
User avatar (0011131)
cobalt (updater)
2014-12-29 17:46

Issue addressed by commit 42d4faa97c04: Fixed: The client could potentially get HOMs while requesting a snapshot. (fixes 2033)
Committed by Leonard on Monday 29 December 2014 18:07:21

Changes in files:
 docs/zandronum-history.txt | 1 +
 src/c_console.cpp | 12 +++++++++---
 src/d_main.cpp | 7 ++++++-
 3 files changed, 16 insertions(+), 4 deletions(-)
User avatar (0011132)
Torr Samaho (administrator)
2014-12-29 17:49

Pulled, rebased and compressed. I also went ahead and replaced
( NETWORK_GetState( ) == NETSTATE_CLIENT ) || ( CLIENTDEMO_IsPlaying( ) == true )

by
NETWORK_InClientMode()
in the NoWipe code fragment and sneaked "(fixes 2033)" into the log message.
User avatar (0011145)
Torr Samaho (administrator)
2014-12-31 10:15

Now that I merged this with 2.0 I noticed severe display problems in the console while the snapshot is received in the software renderer. We'll need to fix this ASAP.
User avatar (0011146)
Torr Samaho (administrator)
2014-12-31 10:56

I have found a way that seems to fix the problem.
User avatar (0011153)
Leonard (developer)
2014-12-31 13:58

Ah sorry I didn't test the fix with software, I always use opengl.
Your fix seems to have broken for people with vid_hw2d set to 1.
I made a pull request that fixes the issue in all cases (with any vid_renderer and vid_hw2d values)
User avatar (0011163)
Torr Samaho (administrator)
2015-01-01 17:02

Strange, on my system the fix worked with "vid_hw2d 1" and the software renderer. Apparently, there are some system dependent issues. I took a different approach now to fix this: Instead of copying more and more code snippets from "case GS_FULLCONSOLE:", the code now jumps there and uses the normal full console rendering code.
User avatar (0011170)
Arco (updater)
2015-01-01 18:13

Issue fixed in r150101-1703.

Issue Community Support
This issue is already marked as resolved.
If you feel that is not the case, please reopen it and explain why.
Supporters: No one explicitly supports this issue yet.
Opponents: No one explicitly opposes this issue yet.

- Issue History
Date Modified Username Field Change
2014-12-22 20:22 Leonard New Issue
2014-12-22 20:37 Leonard Note Added: 0011085
2014-12-23 20:49 Torr Samaho Note Added: 0011087
2014-12-23 20:50 Torr Samaho Status new => feedback
2014-12-24 16:31 Leonard Note Added: 0011088
2014-12-24 16:31 Leonard Status feedback => new
2014-12-28 21:46 Leonard Note Added: 0011110
2014-12-28 21:49 Torr Samaho Note Added: 0011111
2014-12-28 21:49 Torr Samaho Assigned To => Torr Samaho
2014-12-28 21:49 Torr Samaho Status new => needs testing
2014-12-28 21:52 Torr Samaho Status needs testing => needs review
2014-12-29 15:14 Leonard Note Added: 0011127
2014-12-29 17:21 Torr Samaho Note Added: 0011130
2014-12-29 17:22 Torr Samaho Status needs review => feedback
2014-12-29 17:46 cobalt Status feedback => needs testing
2014-12-29 17:46 cobalt Target Version => 1.4
2014-12-29 17:46 cobalt Description Updated View Revisions
2014-12-29 17:46 cobalt Additional Information Updated View Revisions
2014-12-29 17:46 cobalt Note Added: 0011131
2014-12-29 17:49 Torr Samaho Note Added: 0011132
2014-12-31 10:15 Torr Samaho Note Added: 0011145
2014-12-31 10:56 Torr Samaho Note Added: 0011146
2014-12-31 13:58 Leonard Note Added: 0011153
2015-01-01 17:02 Torr Samaho Note Added: 0011163
2015-01-01 18:13 Arco Note Added: 0011170
2015-01-01 18:13 Arco Status needs testing => resolved
2015-01-01 18:13 Arco Fixed in Version => 2.0
2015-01-01 18:13 Arco Resolution open => fixed
2018-09-30 23:10 Blzut3 Status resolved => closed






Questions or other issues? Contact Us.

Links


Copyright © 2000 - 2024 MantisBT Team
Powered by Mantis Bugtracker