[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Freeze exception requested for openarena 0.8.5-3 (fixes important bug)



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 <smcv@debian.org>  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/trunk@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

Reply to: