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

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000810Zandronum[All Projects] Bugpublic2012-04-24 20:542018-09-30 19:52
ReporterMediumTank 
Assigned ToTorr Samaho 
PriorityhighSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version98d 
Target VersionFixed in Version1.0 
Summary0000810: CLIENTSIDE ACS Script 1 floods the server and clients with data, extreme packet loss
Description98e-alpha 120405-0228

I have no idea why this is happening, but lets say you have



#include "zcommon.acs"
#library "TEST"

script 1 (void) NET CLIENTSIDE
{
    SetHudSize(640, 480, 1);
    for (int i = 0; i < 512; i++)
        HudMessage(s: "test"; HUDMSG_PLAIN, 500 + i, CR_WHITE, 50.0, 50.0, 0.1);
    delay(1);
    restart;
}

Script 2 ENTER
{
    ACS_ExecuteAlways(1, 0);
}

Script 3 (void) CLIENTSIDE
{
}



A few problems I noticed:

1) Script 1 is unpukable for some unknown reason, so I have to invoke it with ENTER

2) When it was pukable, the same result happened... why it won't even puke now is beyond me.

3) If you remove
Script 3 (void) CLIENTSIDE
{
}
It will function just normally
As soon as you add any CLIENTSIDE script, it breaks.

4) If you copy paste it to another script number (script 1 ---> script 4 for example), it will run normally, therefore it's something with script 1.


THE PROBLEM:
Script 1 in the .pk3 I attached, when run will do clientside stuff for the one who invoked it, but sends massive amounts of data to the server (just because I'm running 512 HudMessages x 35 per second). When you put it on Script 4 for example, puking it via console works, and it runs perfectly clientsided as you want (no bandwidth usage).

Now the confusing part is, if you have one other CLIENTSIDE script anywhere else, script 1 breaks and floods you. If you do not have another CLIENTSIDE script, then script 1 works as normal.



If you literally change the number from 1 to 4, rejoin the server. You'll get a thing saying "I dont know what script 1 is" since it's gone, then if you type 'puke 4' in your console, it runs perfectly without any bandwidth loss if you check the Statistics tab.

Why only Script 1... no idea.
I wonder how many wads though may have this problem buried in it by using script 1? If you loop script 1 for whatever reason, there's going to be bandwidth leaking.
Steps To Reproduce1. Create an online game (I did with Doomseeker, no other configs) with my attached PK3

2. all flags (DM1/2/3, Compat1/2) were all zero according to the console, though even when I messed around with flags it didn't change anything

3. Join it, notice intense packet flooding
Attached Files? file icon Bandwidth.pk3 [^] (921 bytes) 2012-04-24 20:54
? file icon bandwidth_01.wad [^] (3,750 bytes) 2012-04-25 08:19
? file icon script_net_puke_01.wad [^] (2,471 bytes) 2012-05-05 20:32

- Relationships
related to 0000799closedTorr Samaho 98e - Running more than one CLIENTSIDE script transfers to all other players upon activator disconnecting 

-  Notes
User avatar (0003425)
unknownna (updater)
2012-04-25 08:25
edited on: 2012-04-25 10:49

I'm able to puke the first script in my own example WAD.

If I comment out

for (int i = 0; i < 512; i++)

it doesn't kick me from the server for missing more than 1024 packets.

If I remove the dummy CLIENTSIDE script, i.e., script 3, the server doesn't leak out bandwidth.

If I change script 1's number to any number above 1, the server doesn't leak out bandwidth.

MAP01 in the example WAD has the NET CLIENTSIDE script numbered as 1. MAP02 in the example WAD has the NET CLIENTSIDE script numbered as 2.

Script 1 (Void) NET CLIENTSIDE
{
    SetHudSize (640, 480, 1);
    for (int i = 0; i < 512; i++)
        HudMessage(s: "test"; HUDMSG_PLAIN, 500 + i, CR_WHITE, 50.0, 50.0, 0.1);
    Delay (1);
    Restart;
}

Script 2 (Void) CLIENTSIDE {}

Script 2 (Void) NET CLIENTSIDE
{
    SetHudSize (640, 480, 1);
    for (int i = 0; i < 512; i++)
        HudMessage(s: "test"; HUDMSG_PLAIN, 500 + i, CR_WHITE, 50.0, 50.0, 0.1);
    Delay (1);
    Restart;
}

Script 1 (Void) CLIENTSIDE {}

BTW: For some reason the switch in MAP02 will not make any sounds or display the switch animation.

Edit:

Quote from unknownna
I'm able to puke the first script in my own example WAD.

I had sv_cheats set to 1. I can't puke the script in MAP01 if sv_cheats is set to 0. But I'm able to puke the script in MAP02.

User avatar (0003429)
Dusk (developer)
2012-04-25 11:48
edited on: 2012-04-25 11:57

Looks like ZDoom fixed this later on. The script flags for 1 are getting overridden by 0, adding a div by 4 to a variable seems to fix this - and this is present in current ZDoom code. I'm trying to pinpoint the revision this was fixed in now.

EDIT: Scratch that. ZDoom seems to still have this issue. It divides the max by 4 for the var counting*, but not for script flags.
I'll try reproduce in ZDoom, make an example wad and report there accordingly...

*'http://zdoom.org/Changelog/3352/files [^]'

User avatar (0003432)
Dusk (developer)
2012-04-25 21:59

Reported:'http://forum.zdoom.org/viewtopic.php?f=2&t=32670 [^]'
User avatar (0003441)
Dusk (developer)
2012-04-26 12:16

ZDoom fixed this:
'http://zdoom.org/Changelog/3593/files [^]'
User avatar (0003564)
unknownna (updater)
2012-05-05 20:30
edited on: 2012-05-05 20:33

Regarding the puke issue: I found a pattern. There are 10 NET scripts.

With all scripts included, script 10 is unpukable.
If I remove script 1, script 9 becomes unpukable.
If I remove script 1-2, script 8 becomes unpukable.
If I remove script 1-3, script 7 becomes unpukable.
If I remove script 1-4, script 6 becomes unpukable.
If I remove script 1-5, script 6-10 are still pukable.

#Include "zcommon.acs"

Script 1 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 1 NET CLIENTSIDE puked.");
}

Script 2 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 2 NET CLIENTSIDE puked.");
}

Script 3 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 3 NET CLIENTSIDE puked.");
}

Script 4 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 4 NET CLIENTSIDE puked.");
}

Script 5 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 5 NET CLIENTSIDE puked.");
}

Script 6 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 6 NET CLIENTSIDE puked.");
}

Script 7 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 7 NET CLIENTSIDE puked.");
}

Script 8 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 8 NET CLIENTSIDE puked.");
}

Script 9 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 9 NET CLIENTSIDE puked.");
}

Script 10 (Void) NET CLIENTSIDE
{
    PrintBold (s:"Script 10 NET CLIENTSIDE puked.");
}


User avatar (0004265)
Torr Samaho (administrator)
2012-08-05 14:47

I backported the fixes from ZDoom revision 3352 and 3593, this should take care of the problems. Please confirm with the upcoming beta build.
User avatar (0004762)
unknownna (updater)
2012-09-23 18:18

Quote from Torr Samaho
Please confirm with the upcoming beta build.

Things seem to be fine now.

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
2012-04-24 20:54 MediumTank New Issue
2012-04-24 20:54 MediumTank File Added: Bandwidth.pk3
2012-04-25 08:18 unknownna Status new => confirmed
2012-04-25 08:19 unknownna File Added: bandwidth_01.wad
2012-04-25 08:21 unknownna Product Version => 98d
2012-04-25 08:21 unknownna Summary 98e - CLIENTSIDE ACS Script 1 floods the server and clients with data, extreme packet loss => CLIENTSIDE ACS Script 1 floods the server and clients with data, extreme packet loss
2012-04-25 08:25 unknownna Note Added: 0003425
2012-04-25 08:29 unknownna Priority normal => high
2012-04-25 10:49 unknownna Note Edited: 0003425 View Revisions
2012-04-25 11:15 Dusk Assigned To => Dusk
2012-04-25 11:15 Dusk Status confirmed => assigned
2012-04-25 11:48 Dusk Note Added: 0003429
2012-04-25 11:48 Dusk Note Edited: 0003429 View Revisions
2012-04-25 11:52 Dusk Note Added: 0003430
2012-04-25 11:52 Dusk Status assigned => feedback
2012-04-25 11:53 Dusk Note Edited: 0003430 View Revisions
2012-04-25 11:54 Dusk Note Deleted: 0003430
2012-04-25 11:56 Dusk Note Edited: 0003429 View Revisions
2012-04-25 11:56 Dusk Status feedback => assigned
2012-04-25 11:57 Dusk Note Edited: 0003429 View Revisions
2012-04-25 21:59 Dusk Note Added: 0003432
2012-04-25 21:59 Dusk Status assigned => feedback
2012-04-26 00:20 Torr Samaho Relationship added related to 0000799
2012-04-26 12:16 Dusk Note Added: 0003441
2012-05-05 20:30 unknownna Note Added: 0003564
2012-05-05 20:31 unknownna Note Edited: 0003564 View Revisions
2012-05-05 20:31 unknownna Note Edited: 0003564 View Revisions
2012-05-05 20:32 unknownna File Added: script_net_puke_01.wad
2012-05-05 20:33 unknownna Note Edited: 0003564 View Revisions
2012-06-09 13:22 Torr Samaho Category General => Bug
2012-08-05 14:47 Torr Samaho Note Added: 0004265
2012-08-05 14:47 Torr Samaho Assigned To Dusk => Torr Samaho
2012-08-05 14:47 Torr Samaho Status feedback => needs testing
2012-09-23 18:18 unknownna Note Added: 0004762
2012-09-23 18:26 Torr Samaho Status needs testing => resolved
2012-09-23 18:26 Torr Samaho Fixed in Version => 1.0
2012-09-23 18:26 Torr Samaho Resolution open => fixed
2018-09-30 19:52 Blzut3 Status resolved => closed






Questions or other issues? Contact Us.

Links


Copyright © 2000 - 2025 MantisBT Team
Powered by Mantis Bugtracker