I've a crash problem i can't figure out.
I have no sub module installed, no plugin installed.
Only rage enabled via modules.ini or a plugin just including rage and doing nothing.
On the server, only 1 function file is in functions/ folder : SV_WriteEntitiesToClient
Only 1 handler is in the handlers folder : Void__ptr_ptr
It works fine on windows, but on linux, as soon as a player is entering the server, so when the function is called, the server is crashing.
If someone can have a look at the handler, i don't think i have made any mistake though.
From OSHLDS, function looks like this :
Spoiler
Code:
/* DESCRIPTION: SV_WriteEntitiesToClient
// LOCATION:
// PATH: SV_SendClientDatagram
//
// Here it is, writing entities to the client. Because they need to
// know these things. First we check to see what the client can actually
// SEE (they don't need to know Joe Schmoe is on the other side of the map),
// then we send it to them using delta compression (which, if you recall, is
// a fancy way of taking a 'default' state and filling in the changed values).
*/
void SV_WriteEntitiesToClient(client_t *client, sizebuf_t *msg) {
unsigned int i, WritePing, CheckWeps, var_15404_visenttotal, var_15430_boolplayer;
byte * var_1541C_pvs, * var_1542C_pvsptr;
byte * var_15420_pas;
packet_entities_t * var_15408_packent;
client_t * var_15434_client;
client_frame_t * var_15410_frame;
edict_t * var_1540C_ent, * var_15438_ent2;
entity_state_t * var_1543C_esptr, massivearray[0x100];
var_1541C_pvs = NULL;
var_15420_pas = NULL;
var_15410_frame = &(client->padding3480_frames[client->netchan1C.outgoing_sequence& SV_UPDATE_MASK]);
var_1540C_ent = client->padding4A84;
gEntityInterface.pfnSetupVisibility(client->padding4A88, var_1540C_ent, &var_1541C_pvs, &var_15420_pas);
SV_ClearPacketEntities(var_15410_frame);
var_15408_packent = &var_15410_frame->entities;
var_15404_visenttotal = 0;
WritePing = SV_ShouldUpdatePing(client);
CheckWeps = (client->cl_lw != 0);
var_1542C_pvsptr = var_1541C_pvs;
for(i = 1; i < global_sv.num_edicts; i++) {
var_15438_ent2 = &global_sv.edicts[i];
if(i > 0 && i < global_svs.allocated_client_slots) {
var_15430_boolplayer = 1;
}
else {
var_15430_boolplayer = 0;
}
if(var_15430_boolplayer != 0) {
var_15434_client = &global_svs.clients[i-1];
if((var_15434_client->padding00_used == 0 && var_15434_client->padding04 == 0) ||
var_15434_client->padding243C_proxy != 0) {
continue;
}
}
//Now to process.
if(var_15404_visenttotal > 255) {
Con_Printf("%s: Too many entities in visible packet list.\n", __FUNCTION__);
break;
}
var_1543C_esptr = &massivearray[var_15404_visenttotal];
if(gEntityInterface.pfnAddToFullPack(var_1543C_esptr, i, var_15438_ent2, global_host_client->padding4A84, CheckWeps, var_15430_boolplayer, var_1542C_pvsptr)) {
var_15404_visenttotal++;
}
}
SV_AllocPacketEntities(var_15410_frame, var_15404_visenttotal);
if(var_15408_packent->max_entities != 0) {
Q_memcpy(var_15408_packent->entities, massivearray, sizeof(entity_state_t) * var_15408_packent->max_entities);
}
SV_EmitPacketEntities(client, var_15408_packent, msg);
SV_EmitEvents(client, var_15408_packent, msg);
if(WritePing != 0) {
SV_EmitPings(client, msg);
}
}