… be wary of bugs under rocks.
The last couple of days have been “interesting” (especially in terms of getting any sleep here). The complex and scary stuff in Battleground Europe’s 1.29 patch has worked as you’d expect it to. But as any coder ought to expect, the little things went awry.For instance, inexplicably, host code that has been present since 1.24 started to cause crashes. The code was always bad, but somehow it appears to have been avoided by the CPUs on the hosts. This is probably down to some subtle difference in the executable generated by different versions of the Gnu C Compiler that builds the host binaries.
This manifested most peculiarly – about 3 hours after someone exited the game without despawning, one or more cell hosts would crash.
Elsewhere in the cell hosts a bad idea finally found expression: certain data fields are duplicated within some of the host data, not least being the vehicle type. There were no less than 5 different places within the set of structures describing your current vehicle (or trooper) and they all got populated at various stages of the spawning process. Finally, somehow, one of those bit us in the butt. When someone spawned a multi-crew vehicle and the driver got done spawning a whole minute before the crew the vehicle would send data about itself to the other cells. Suddenly, with 1.29, this started causing a crash because until both people were in the vehicle, the vehicle type field that the “share me” code used wasn’t populated.
These cell crashes were leading to a lot of “invisibility” issues, and I haven’t seen more than the usual stream of reports from people who just couldn’t see the other guy since.
Training instances didn’t work on the live server because eedjit here had put in a special clause that specifically excluded one additional line of code from being tested in a release candidate.
The last biggy was the chat host crashing when someone tried to leave their squad. The message describing squad actions includes a field for the callsign of the player you are operating on. Somehow, when the operation is LeaveSquad, this field wasn’t being initialized. And because of the China work I’d added extra validation to the processing of callsigns which was detecting this invalidity and causing a crash.
But the servers have now been running happily – and efficiently – for a good 8 hours so all of the above fixes seem to have taken effect.
Of course, if I’d taken Krieger’s invitation to Thanksgiving dinner tonight, that would not be the case :) The servers know I’m glued to my cell phone so they are waiting for me to close my eyes…
Now, I just need a good 24 hours sleep :)
Happy Thanksgiving from me and my microwave meal :)