What is SZ_GetSpace:overflow
Moderator: InsideQC Admins
10 posts
• Page 1 of 1
What is SZ_GetSpace:overflow
Hey. I am trying to get my games psp multiplayer working.however there is bug when another psp joins the game.
While the psp (a) is connecting and precachign in halfway about the psp (b) (server) gets this error. As far as i know it basicaly shut downs the server. and stucks the psp (a)'s connecting to signon 1.
How ever if psp (a) has loaded another map (precached most of the models and sounds) the server psp (b) doesnt get the error and second psp (a) can join.
Is there any way to fix this? For what i have SZ_ thingy happens in keepalive message.
While the psp (a) is connecting and precachign in halfway about the psp (b) (server) gets this error. As far as i know it basicaly shut downs the server. and stucks the psp (a)'s connecting to signon 1.
How ever if psp (a) has loaded another map (precached most of the models and sounds) the server psp (b) doesnt get the error and second psp (a) can join.
Is there any way to fix this? For what i have SZ_ thingy happens in keepalive message.
- Jukki
- Posts: 214
- Joined: Wed Apr 07, 2010 4:59 am
sz_getspace failures happen when something tries to write too much information into a sizebuf_t object (ie: a network message buffer). Typically this applies only to reliable buffers as unreliable ones will be purged and dropped if they overflow.
you'd need a stack trace to figure out exactly where its overflowing, but in all such situations, if the server can crash because of a client, its a server or qc bug.
chances are, the server is constantly trying to add data to the client's reliable buffer. if the client is stalling trying to load content (sounds or whatever) and not replying to the server, the server won't be able to send out its data and get confirmation that it was received. if the server continues to try adding to the pending data which it can't flush yet, then it'll crash. Either don't generate more data, or check available sapce and cache the fact that that you couldn't send the current state yet, and do that when you can.
you'd need a stack trace to figure out exactly where its overflowing, but in all such situations, if the server can crash because of a client, its a server or qc bug.
chances are, the server is constantly trying to add data to the client's reliable buffer. if the client is stalling trying to load content (sounds or whatever) and not replying to the server, the server won't be able to send out its data and get confirmation that it was received. if the server continues to try adding to the pending data which it can't flush yet, then it'll crash. Either don't generate more data, or check available sapce and cache the fact that that you couldn't send the current state yet, and do that when you can.
- Spike
- Posts: 2892
- Joined: Fri Nov 05, 2004 3:12 am
- Location: UK
- Code: Select all
typedef struct sizebuf_s
{
qboolean allowoverflow; // if false, do a Sys_Error
qboolean overflowed; // set to true if the buffer size failed
byte *data;
int maxsize;
int cursize;
} sizebuf_t;
that is.
- Spike
- Posts: 2892
- Joined: Fri Nov 05, 2004 3:12 am
- Location: UK
possible overflow location:
- Code: Select all
void CL_KeepaliveMessage (void)
{
float time;
static float lastmsg;
int ret;
sizebuf_t old;
byte olddata[16384]; //qbism- was 8192, could overrun as discovered by mh
.
.
.
-
qbism - Posts: 1236
- Joined: Thu Nov 04, 2004 5:51 am
10 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 1 guest