Pages: [1]
  Print  
Author Topic: wrong modelname crashes server  (Read 9781 times)
davidd
Half-Nub


Cakes 6
Posts: 99


[Z] server maintainer


« on: August 19, 2009, 04:18:54 PM »

oaded 0.8.1 compiled on freebsd 32 bit ran on 64 bit in 32 bit emulation mode.

i have not tested it myself, but it struck me as odd to have a * in the headmodel client string.

 No crashlog was created.

there are only bots and then this player connects.
here the last lines of the output of the server


Code:
Award: 5 2: Major gained the IMPRESSIVE award!
broadcast: print "Timelimit hit.\n"
Exit: Timelimit hit.
red:7  blue:3
score: 13  ping: 0  client: 8 Kyonshi
score: 11  ping: 0  client: 1 Tony
score: 9  ping: 0  client: 2 Liz
score: 9  ping: 0  client: 4 Gargoyle
score: 5  ping: 0  client: 6 Jenna
score: 5  ping: 0  client: 9 Assassin
score: 4  ping: 0  client: 0 Grunt
score: 3  ping: 0  client: 7 Jenna
score: 1  ping: 0  client: 5 Major
score: 1  ping: 0  client: 3 Gargoyle
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
Client 765 connecting with 100 challenge ping
ClientConnect: 10
ClientUserinfoChanged: 10 n\UnnamedPlayer\t\2\model\james\hmodel\*james\g_redteam\\g_blueteam\\c1\4\c2\5\hc\100\w\0\l\0\tt\0\tl\0
broadcast: print "UnnamedPlayer^7 connected\n"
********************
ERROR: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment

********************
----- Server Shutdown (Server crashed: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment
) -----
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
==== ShutdownGame ====
ShutdownGame:
------------------------------------------------------------
AAS shutdown.
---------------------------
I inspected what map should be playing at that time:
Code:
]nextmap     
"nextmap" is:"vstr d15^7" default:"^7"
]d15
"d15" is:"map suspended; set nextmap vstr d16^7", the default
]d14
"d14" is:"map czest1dm; set nextmap vstr d15^7", the default
]d13     
"d13" is:"map kaos; set nextmap vstr d14^7", the default
]

the last games in the logfile attached I am surprised to see that the game suddenly seemed to have changed to a teamgame?

I hope this bug report will help.

Grtz David.
Logged

Openarena, the freedom to contribute and extend.
Falkland
Member


Cakes 6
Posts: 590


« Reply #1 on: August 19, 2009, 04:48:31 PM »

oaded 0.8.1 compiled on freebsd 32 bit ran on 64 bit in 32 bit emulation mode.

i have not tested it myself, but it struck me as odd to have a * in the headmodel client string.


That model/headmodel combination is the default for the missionpack ( star included ) ... I am not sure , but maybe the UnnamedPlayer tried to connect through the MP server browser and it crashed your server ... but I'm really not sure of that.
Logged
davidd
Half-Nub


Cakes 6
Posts: 99


[Z] server maintainer


« Reply #2 on: August 19, 2009, 05:42:22 PM »

the same person connected again, i think, and crashed my server again.
Logged

Openarena, the freedom to contribute and extend.
Falkland
Member


Cakes 6
Posts: 590


« Reply #3 on: August 19, 2009, 07:35:37 PM »

there's an opened bug on ioquake3 bugzilla that could be related to the problem u've experimented : http://bugzilla.icculus.org/show_bug.cgi?id=3418

Quote
Problem is, checking if  "netchan queue has been properly initialized" should
not be performed on zombies which all recently disconnected clients
are, until engine sets them free in next few seconds after disconnect.

Also there is simpler way to reproduce this bug -- just add 20+ bots
and then issue 'kick allbots' or 'kick all' from the server console or
rcon. Server should crash with message:

"ERROR: netchan queue is not properly initialized in
SV_Netchan_TransmitNextFragment"
..."Server Shutdown (Server crashed: netchan queue is not properly
initialized in SV_Netchan_TransmitNextFragment"

Original code:
        // make sure the netchan queue has been properly initialized (you never know)
        if (!client->netchan_end_queue) {
            Com_Error(ERR_DROP, "netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment\n");
        }

Fixed:
        // make sure the netchan queue has been properly initialized (you never know)
        // DD - skip just disconnected and zombies (CS_ZOMBIE)
        if (!client->netchan_end_queue && client->state != CS_ZOMBIE) {
            Com_Error(ERR_DROP, "netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment\n");
        }

Credit goes to: DD

Note: you may use 'client->state >= CS_CONNECTED' instead of
'client->state != CS_ZOMBIE', if you want to skip CS_FREE clients too.
I used != CS_ZOMBIE because recently kicked players get zombie state
for a few seconds and error occurred after kicking a lot of players at
once.

I tested it few times with 20-24 bots and it kicked them all without an error.

The bug is still marked as opened and the fix reported in the bugreport is still not actually applied to the engine.

Code:
...

// code/server/sv_net_chan.c

/*
=================
SV_Netchan_TransmitNextFragment
=================
*/
void SV_Netchan_TransmitNextFragment( client_t *client ) {
Netchan_TransmitNextFragment( &client->netchan );
if (!client->netchan.unsentFragments)
{
// make sure the netchan queue has been properly initialized (you never know)
if (!client->netchan_end_queue) {
Com_Error(ERR_DROP, "netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment\n");
}
// the last fragment was transmitted, check wether we have queued messages
if (client->netchan_start_queue) {
netchan_buffer_t *netbuf;
Com_DPrintf("#462 Netchan_TransmitNextFragment: popping a queued message for transmit\n");
netbuf = client->netchan_start_queue;
SV_Netchan_Encode( client, &netbuf->msg );
Netchan_Transmit( &client->netchan, netbuf->msg.cursize, netbuf->msg.data );
// pop from queue
client->netchan_start_queue = netbuf->next;
if (!client->netchan_start_queue) {
Com_DPrintf("#462 Netchan_TransmitNextFragment: emptied queue\n");
client->netchan_end_queue = &client->netchan_start_queue;
}
else
Com_DPrintf("#462 Netchan_TransmitNextFragment: remaining queued message\n");
Z_Free(netbuf);
}
}
}
...

EDIT : Anyway , since u compile the engine for your platform ( freebsd ) , u can apply the fix by yourself and recompile the engine . If this will not fix the problem , I have another idea but better trying this before.
« Last Edit: August 20, 2009, 08:00:48 AM by Falkland » Logged
davidd
Half-Nub


Cakes 6
Posts: 99


[Z] server maintainer


« Reply #4 on: August 21, 2009, 11:50:59 AM »

Yes, it got fixed, 50% i think.....

I did rcon kick allbots (like suggested in the bugzilla post.)
The first few bots connect, no problem, then i reconnect, blam crash?

Catch is, i did it after the game had already ended. this might be a separate bug.

Then i got some error on my client about cyclic packets distrusted or something, ill try it again
But the server did not crash
I could just reconnect like this:
Code:

ClientConnect: 2
ClientUserinfoChanged: 2 n\^1[Z]^2Dav^4idd\t\0\model\sarge/red\hmodel\sarge/red\g_redteam\\g_blueteam\\c1\5\c2\5\hc\100\w\0\l\0\tt\0\tl\0
broadcast: print "^1[Z]^2Dav^4idd^7 connected\n"
Sending heartbeat to dpmaster.deathmask.net
==== ShutdownGame ====
ShutdownGame:
------------------------------------------------------------
AAS shutdown.
------ Server Initialization ------
Server: oa_rpg3dm2
Hunk_Clear: reset the hunk ok
----- FS_Startup -----
Current search path:
snipped out files, they were ok.
Code:
----------------------
21595 files in pk3 files
Loading vm file vm/qagame.qvm...
...which has vmMagic VM_MAGIC_VER2
Loading 1207 jump table targets
qagame loaded in 5040608 bytes on the hunk
------- Game Initialization -------
gamename: baseoa
gamedate: Oct 20 2008
------------------------------------------------------------
InitGame: \bot_minplayers\20\elimination_ctf_oneway\0\elimination_roundtime\90\g_delagHitscan\1\capturelimit\8\g_maxGameClients\26\sv_dlURL\http://www.zvdk.nl\sv_floodProtect\1\sv_maxPing\150\sv_minPing\0\sv_maxRate\25000\sv_minRate\0\sv_maxclients\32\sv_hostname\  ^1[Z]^^88 BRIGHT^^66SKins DM ^3server\timelimit\ver\timelimit\15\f15\fraglimit\40\dmflags\0\version\ioq3+oa 1.35 freebsd-i386 Aug  5 2009\g_gametype\0\protocol\71\mapname\oa_rpg3dm2\sv_privateClients\2\sv_allowDownload\1\.Admin  \^1[Z]^2Dav^4idd \.email\ad
min@zvdk.nl\.www\www.zvdk.nl/q3stats\gamename\baseoa\g_needpass\0\g_obeliskRespawnDelay\10\g_rockets\0\g_instantgib\0\g_humanplayers\1
0 teams with 0 entities
16 items registered
-----------------------------------
------- BotLib Initialization -------
loaded weapons.c
loaded items.c
loaded syn.c
loaded rnd.c
loaded match.c
------------ Map Loading ------------
trying to load maps/oa_rpg3dm2.aas
loaded maps/oa_rpg3dm2.aas
found 32 level items
-------------------------------------
24 bots parsed
43 arenas parsed
AAS initialized.
ClientConnect: 2
ClientUserinfoChanged: 2 n\^1[Z]^2Dav^4idd\t\0\model\sarge/red\hmodel\sarge/red\g_redteam\\g_blueteam\\c1\5\c2\5\hc\100\w\0\l\0\tt\0\tl\0
-----------------------------------
Sending heartbeat to dpmaster.deathmask.net
ClientUserinfoChanged: 2 n\^1[Z]^2Dav^4idd\t\0\model\sarge/red\hmodel\sarge/red\g_redteam\\g_blueteam\\c1\5\c2\5\hc\100\w\0\l\0\tt\0\tl\0
broadcast: print "^1[Z]^2Dav^4idd^7 entered the game\n"
ClientBegin: 2
loaded skill 1 from bots/default_c.c
loaded skill 1 from bots/rai_c.c
loaded skill 4 from bots/default_c.c
loaded skill 4 from bots/rai_c.c
loaded bots/rai_i.c
loaded bots/rai_w.c
loaded rai from bots/rai_t.c
ClientConnect: 0
ClientUserinfoChanged: 0 n\Rai\t\0\model\angelyss/rai\hmodel\angelyss/rai\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Rai^7 connected\n"
broadcast: print "Rai^7 entered the game\n"
ClientBegin: 0
Item: 0 weapon_shotgun
Item: 0 item_armor_shard
Item: 0 item_armor_shard
Item: 2 item_health_mega
Item: 0 item_armor_shard
Item: 0 item_armor_shard
Item: 2 item_armor_combat
Item: 0 weapon_rocketlauncher
Item: 2 weapon_rocketlauncher
Item: 2 item_armor_shard
loaded cached skill 1.000000 from bots/default_c.c
loaded skill 1 from bots/sarge_c.c
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/sarge_c.c
loaded bots/sarge_i.c
loaded bots/sarge_w.c
loaded sarge from bots/sarge_t.c
ClientConnect: 1
ClientUserinfoChanged: 1 n\Sarge\t\0\model\sarge\hmodel\sarge\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Sarge^7 connected\n"
broadcast: print "Sarge^7 entered the game\n"
ClientBegin: 1
Kill: 2 1 6: ^1[Z]^2Dav^4idd killed Sarge by MOD_ROCKET
Item: 2 item_health_small
Item: 2 item_health_small
Item: 2 item_health_small
Item: 1 weapon_shotgun
Item: 2 weapon_shotgun
Item: 2 item_health_small
Item: 2 item_armor_shard
Item: 2 item_armor_shard
Item: 0 weapon_grenadelauncher
Item: 1 weapon_rocketlauncher
loaded cached skill 1.000000 from bots/default_c.c
loaded skill 1 from bots/ayumi_c.c
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/ayumi_c.c
loaded bots/ayumi_i.c
loaded bots/ayumi_w.c
loaded Ayumi from bots/ayumi_t.c
ClientConnect: 3
ClientUserinfoChanged: 3 n\Jenna\t\0\model\ayumi/jenna\hmodel\ayumi/jenna\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
ClientConnect: 1
ClientUserinfoChanged: 1 n\Sarge\t\0\model\sarge\hmodel\sarge\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Sarge^7 connected\n"
broadcast: print "Sarge^7 entered the game\n"
ClientBegin: 1
Kill: 2 1 6: ^1[Z]^2Dav^4idd killed Sarge by MOD_ROCKET
Item: 2 item_health_small
Item: 2 item_health_small
Item: 2 item_health_small
Item: 1 weapon_shotgun
Item: 2 weapon_shotgun
Item: 2 item_health_small
Item: 2 item_armor_shard
Item: 2 item_armor_shard
Item: 0 weapon_grenadelauncher
Item: 1 weapon_rocketlauncher
loaded cached skill 1.000000 from bots/default_c.c
loaded skill 1 from bots/ayumi_c.c
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/ayumi_c.c
loaded bots/ayumi_i.c
loaded bots/ayumi_w.c
loaded Ayumi from bots/ayumi_t.c
ClientConnect: 3
ClientUserinfoChanged: 3 n\Jenna\t\0\model\ayumi/jenna\hmodel\ayumi/jenna\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Jenna^7 connected\n"
broadcast: print "Jenna^7 entered the game\n"
ClientBegin: 3
********************
ERROR: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment

********************
----- Server Shutdown (Server crashed: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment
) -----
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
==== ShutdownGame ====
ShutdownGame:
------------------------------------------------------------
AAS shutdown.
---------------------------
]

Code:
ClientConnect: 1
ClientUserinfoChanged: 1 n\Sarge\t\0\model\sarge\hmodel\sarge\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Sarge^7 connected\n"
broadcast: print "Sarge^7 entered the game\n"
ClientBegin: 1
Kill: 2 1 6: ^1[Z]^2Dav^4idd killed Sarge by MOD_ROCKET
Item: 2 item_health_small
Item: 2 item_health_small
Item: 2 item_health_small
Item: 1 weapon_shotgun
Item: 2 weapon_shotgun
Item: 2 item_health_small
Item: 2 item_armor_shard
Item: 2 item_armor_shard
Item: 0 weapon_grenadelauncher
Item: 1 weapon_rocketlauncher
loaded cached skill 1.000000 from bots/default_c.c
loaded skill 1 from bots/ayumi_c.c
loaded cached skill 4.000000 from bots/default_c.c
loaded skill 4 from bots/ayumi_c.c
loaded bots/ayumi_i.c
loaded bots/ayumi_w.c
loaded Ayumi from bots/ayumi_t.c
ClientConnect: 3
ClientUserinfoChanged: 3 n\Jenna\t\0\model\ayumi/jenna\hmodel\ayumi/jenna\c1\4\c2\5\hc\70\w\0\l\0\skill\ 2.00\tt\0\tl\0
broadcast: print "Jenna^7 connected\n"
broadcast: print "Jenna^7 entered the game\n"
ClientBegin: 3
********************
ERROR: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment

********************
----- Server Shutdown (Server crashed: netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment
) -----
Sending heartbeat to dpmaster.deathmask.net
Sending heartbeat to dpmaster.deathmask.net
==== ShutdownGame ====
ShutdownGame:
------------------------------------------------------------
AAS shutdown.
---------------------------
Logged

Openarena, the freedom to contribute and extend.
davidd
Half-Nub


Cakes 6
Posts: 99


[Z] server maintainer


« Reply #5 on: August 21, 2009, 12:07:19 PM »

The 2nd time i tried it did not even crash when i typed reconnect afterwards.

but suddenly it crashed again did you do that falkland?
Code:
dom_controlpoint doesn't have a spawn function
runematch_spawn_point doesn't have a spawn function
dom_controlpoint doesn't have a spawn function
dom_controlpoint doesn't have a spawn function
dom_controlpoint doesn't have a spawn function
runematch_spawn_point doesn't have a spawn function
runematch_spawn_point doesn't have a spawn function
runematch_spawn_point doesn't have a spawn function
runematch_spawn_point doesn't have a spawn function
0 teams with 0 entities
17 items registered
Logged

Openarena, the freedom to contribute and extend.
Falkland
Member


Cakes 6
Posts: 590


« Reply #6 on: August 21, 2009, 12:19:03 PM »

But have you applied the proposed fix , recompiled the engine and restarted your server ?

Because the version string of the server appears to be the same of the server that crashes :  ioq3+oa 1.35 freebsd-i386 Aug  5 2009
Logged
davidd
Half-Nub


Cakes 6
Posts: 99


[Z] server maintainer


« Reply #7 on: August 21, 2009, 12:32:35 PM »

http://pastebin.com/d58236a8e

Code:
lood ~/source/081/openarena-engine-0.8.1]$ vi code/server/sv_net_chan.c +138


/*
=================
SV_Netchan_TransmitNextFragment
=================
*/
void SV_Netchan_TransmitNextFragment( client_t *client ) {
        Netchan_TransmitNextFragment( &client->netchan );
        if (!client->netchan.unsentFragments)
        {
                // make sure the netchan queue has been properly initialized (you never know)
                // DD - skip just disconnected and zombies (CS_ZOMBIE) http://bugzilla.icculus.org/show_bug.cgi?id=3418
                if (!client->netchan_end_queue && client->state != CS_ZOMBIE) {
                        Com_Error(ERR_DROP, "netchan queue is not properly initialized in SV_Netchan_TransmitNextFragment\n");
                }

                // the last fragment was transmitted, check wether we have queued messages
                if (client->netchan_start_queue) {
                        netchan_buffer_t *netbuf;
                        Com_DPrintf("#462 Netchan_TransmitNextFragment: popping a queued message for transmit\n");
                        netbuf = client->netchan_start_queue;
                        SV_Netchan_Encode( client, &netbuf->msg );
                        Netchan_Transmit( &client->netchan, netbuf->msg.cursize, netbuf->msg.data );
                        // pop from queue
                        client->netchan_start_queue = netbuf->next;
                        if (!client->netchan_start_queue) {
                                Com_DPrintf("#462 Netchan_TransmitNextFragment: emptied queue\n");
                                client->netchan_end_queue = &client->netchan_start_queue;
                        }
                        else
                                Com_DPrintf("#462 Netchan_TransmitNextFragment: remaining queued message\n");
                        Z_Free(netbuf);
                }
        }
}


/*
===============
SV_Netchan_Transmit
TTimo
:q
[halfleven@lood ~/source/081/openarena-engine-0.8.1]$ ls
BUGS                            README                          md4-readme.txt
COPYING.txt                     TODO                            misc
ChangeLog                       build                           patch-code_qcommon_net_ip_c
Makefile                        code                            ui
Makefile.local                  cross-make-mingw.sh             voip-readme.txt
Makefile.orig                   id-readme.txt
NOTTODO                         make-macosx-ub.sh
[halfleven@lood ~/source/081/openarena-engine-0.8.1]$ gmake
gmake[1]: Entering directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'

Building openarena in build/release-freebsd-i386:
  PLATFORM: freebsd
  ARCH: i386
  VERSION: 1.35
  COMPILE_PLATFORM: freebsd
  COMPILE_ARCH: i386
  CC: cc

  CFLAGS:
    -MMD
    -Wall
    -fno-strict-aliasing
    -Wimplicit
    -Wstrict-prototypes
    -DUSE_ICON
    -I/usr/local/include/SDL
    -I/usr/local/include
    -D_GNU_SOURCE=1
    -D_REENTRANT
    -DUSE_OPENAL
    -DUSE_OPENAL_DLOPEN
    -DUSE_CODEC_VORBIS
    -DUSE_MUMBLE
    -DUSE_VOIP
    -DFLOATING_POINT
    -DUSE_ALLOCA
    -Icode/libspeex/include
    -DUSE_LOCAL_HEADERS
    -DSTANDALONE
    -DPRODUCT_VERSION="1.35"
    -DNDEBUG
    -O3
    -mtune=pentiumpro
    -march=pentium
    -fomit-frame-pointer
    -pipe
    -ffast-math
    -falign-loops=2
    -falign-jumps=2
    -falign-functions=2
    -funroll-loops
    -fstrength-reduce

  LDFLAGS:
    -lm

  Output:
    build/release-freebsd-i386/oa_ded.i386
    build/release-freebsd-i386/openarena.i386

gmake[2]: Entering directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'
DED_CC code/server/sv_net_chan.c
LD build/release-freebsd-i386/oa_ded.i386
CC code/server/sv_net_chan.c
LD build/release-freebsd-i386/openarena.i386
gmake[2]: Leaving directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'
#
gmake[1]: Leaving directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'
#
[halfleven@lood ~/source/081/openarena-engine-0.8.1]$ scp build/release-freebsd-i386/oa_ded.i386 halfleve@dragon.zvdk.nl:     Password:
#
oa_ded.i386                                                                                 100%  811KB 810.5KB/s   00:00
#
[halfleven@lood ~/source/081/openarena-engine-0.8.1]$
so yes, after it crashed i started it again and then is was ok
Logged

Openarena, the freedom to contribute and extend.
Falkland
Member


Cakes 6
Posts: 590


« Reply #8 on: August 21, 2009, 12:44:44 PM »

http://pastebin.com/d58236a8e

Code:
...
gmake[2]: Entering directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'
DED_CC code/server/sv_net_chan.c
LD build/release-freebsd-i386/oa_ded.i386
CC code/server/sv_net_chan.c
LD build/release-freebsd-i386/openarena.i386
gmake[2]: Leaving directory `/usr/home/halfleven/source/081/openarena-engine-0.8.1'
...


Ah ok ok ... u've relaunched the compilation process without doing a make clean , so the version string wasn't altered.
Logged
Pages: [1]
  Print  
 
Jump to: