Hi, Shortly before the freeze I updated openarena to the current upstream version 0.8.5. Unfortunately, this version seems to have an easily reproducible crash bug in the game logic used on servers, Bug #592020 (which was probably not a hard crash when using the bytecode interpreter, but we had to switch to native-code game logic because the compiler for the bytecode is non-free).
Preferred: fix 0.8.5 and let it migrate ======================================= A one-line patch from upstream svn seems to fix it; I'll continue testing before upload in case there are any other nasty regressions. A diff reflecting the contents of games team git is attached; if I have to make any other changes before upload, I'll check with the release team again. The only other change in the diff is the addition of DEP-3 Bug: and Forwarded: annotations in one of the existing patches. Alternative: keep 0.8.1 and fix that ==================================== The alternative to 0.8.5 would be to keep 0.8.1 (which, despite the numbering, was the previous upstream version) as is currently in squeeze. That has some other nasty bugs, which I fixed in the 0.8.5 packages: * the Setup/Player/Model menu doesn't work (Bug #591014 - easy to fix but would require a 300M upload of openarena-data to t-p-u) * lacks a patch from ioquake3 that fixes buffer overflows (<http://bugzilla.icculus.org/show_bug.cgi?id=4669>) * based on an older version of ioquake3 which probably has other unfixed bugs * probably doesn't work on mipsel (no bug filed, determined by inspection; I don't have a mipsel, or any idea whether they're capable of running OA) Keeping 0.8.1 would also mean we're already incompatible with the majority of public servers at release time, which seems undesirable. Regards, S
diff --git a/debian/changelog b/debian/changelog index 2fd529b..9057971 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +openarena (0.8.5-3) UNRELEASED; urgency=low + + * Add patch from oax r203 to fix server crashes if a player joins, then + rapidly leaves or dies (Closes: #592020) + + -- Simon McVittie <[email protected]> Sat, 07 Aug 2010 00:04:45 +0100 + openarena (0.8.5-2) unstable; urgency=low [ Simon McVittie ] diff --git a/debian/patches/0010-CL_MouseMove-some-sort-of-mouse-acceleration-tweak.patch b/debian/patches/0010-CL_MouseMove-some-sort-of-mouse-acceleration-tweak.patch index d8953df..bcd54ea 100644 --- a/debian/patches/0010-CL_MouseMove-some-sort-of-mouse-acceleration-tweak.patch +++ b/debian/patches/0010-CL_MouseMove-some-sort-of-mouse-acceleration-tweak.patch @@ -5,6 +5,8 @@ Subject: [PATCH] CL_MouseMove: don't divide by zero if cl_mouseAccelOffset is 0 Imported from OpenArena engine tarball 0.8.x-13. Origin: upstream, openarena +Bug: http://bugzilla.icculus.org/show_bug.cgi?id=4691 +Forwarded: to ioquake3 --- engine/code/client/cl_input.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/debian/patches/0039-Used-self-enemy-before-it-was-initialized.-Might-hav.patch b/debian/patches/0039-Used-self-enemy-before-it-was-initialized.-Might-hav.patch new file mode 100644 index 0000000..2a72939 --- /dev/null +++ b/debian/patches/0039-Used-self-enemy-before-it-was-initialized.-Might-hav.patch @@ -0,0 +1,27 @@ +From: sago007 <unknown> +Date: Thu, 29 Apr 2010 16:02:53 +0000 +Subject: [PATCH] Used self->enemy before it was initialized. Might have resultet in the TEAMKILL thing + +[This fixes a server crash when a client joins and then rapidly leaves, when +using native code instead of QVMs. -smcv] + +Origin: upstream, oax commit:203 +Bug-Debian: http://bugs.debian.org/592020 +git-svn-id: http://oax.googlecode.com/svn/tr...@203 48ef5666-4144-11de-b6cc-f32266f7ba4a +--- + game/code/game/g_combat.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/game/code/game/g_combat.c b/game/code/game/g_combat.c +index f2185e6..8c81284 100644 +--- a/game/code/game/g_combat.c ++++ b/game/code/game/g_combat.c +@@ -526,7 +526,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int + ent->s.otherEntityNum = self->s.number; + ent->s.otherEntityNum2 = killer; + //Sago: Hmmm... generic? Can I transmit anything I like? Like if it is a team kill? Let's try +- ent->s.generic1 = OnSameTeam (self, self->enemy); ++ ent->s.generic1 = OnSameTeam (self, attacker); + if( !((g_gametype.integer==GT_ELIMINATION || g_gametype.integer==GT_CTF_ELIMINATION) && level.time < level.roundStartTime) ) + ent->r.svFlags = SVF_BROADCAST; // send to everyone (if not an elimination gametype during active warmup) + else diff --git a/debian/patches/series b/debian/patches/series index 214d351..4f37be5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -30,3 +30,4 @@ 0036-Add-error-markers-to-sources-in-the-mod-SDK-that-are.patch 0037-Put-a-error-marker-in-engine-s-ui_shared.h-to-make-s.patch 0038-Fix-buffer-overflow-report-and-patch-by-Eugene-C.-46.patch +0039-Used-self-enemy-before-it-was-initialized.-Might-hav.patch

