Bug#688934: Hang after hitting monster with overfull screen

Bas Wijnen wijnen at debian.org
Thu Sep 27 06:17:39 UTC 2012


Package: freedink-engine
Version: 1.08.20120427-2
Severity: normal
Tags: patch

When hitting a monster on a full screen, spr[0].seq is filled with a non-zero
value. This makes dink hang the next time he triggers a warp on a type 2
sprite.

traceback with a watchpoint on spr[0].seq:

(gdb) run -g ~/dmods/4towers -w
Starting program:
/home/shevek/src/git/pydink/dink-source/freedink-1.08.20100420/src/freedink
-g ~/dmods/4towers -w
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1".
[New Thread 0xb6f5cb70 (LWP 4604)]
[New Thread 0xb2470b70 (LWP 4605)]
[Thread 0xb2470b70 (LWP 4605) exited]
[New Thread 0xb2470b70 (LWP 4606)]
....
(gdb) watch spr[0].seq
Hardware watchpoint 3: spr[0].seq
(gdb) c
Continuing.
[ERROR] [DinkC] boss-splitbug:34: out of var space, all 250 used
[ERROR] [DinkC] boss-splitbug:34:[var_equals]: unknown var &crap
[ERROR] [DinkC] boss-splitbug:34: out of var space, all 250 used
[ERROR] [DinkC] boss-splitbug:34:[var_equals]: unknown var &crap
Hardware watchpoint 3: spr[0].seq

Old value = 0
New value = 189
random_blood (mx=607, my=349, sprite=232) at dinkvar.c:3939
3939	                if (sprite > 0)
(gdb) bt
#0  random_blood (mx=607, my=349, sprite=232) at dinkvar.c:3939
#1  0x08074dfc in run_through_tag_list (h=1, strength=6) at freedink.c:3737
#2  0x0807890b in updateFrame () at update_frame.c:615
#3  0x0804bbcd in main (argc=4, argv=0xbffff2a4) at freedink.c:5027
(gdb) l
3934	                int crap2 = add_sprite(mx,my,5,myseq,1);
3935	                spr[crap2].speed = 0;
3936	                spr[crap2].base_walk = -1;
3937	                spr[crap2].nohit = 1;
3938	                spr[crap2].seq = myseq;
3939	                if (sprite > 0)
3940	                        spr[crap2].que = spr[sprite].y+1;
3941	
3942	        }
3943	

In other words, the solution is to let random_blood check if the sprite can be
created (that is, crap2 != 0), and if not, don't fill its members. I've
attached a patch.

Thanks,
Bas

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-3-686-pae (SMP w/2 CPU cores)
Locale: LANG=nl_NL.UTF-8, LC_CTYPE=nl_NL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages freedink-engine depends on:
ii  fonts-liberation [ttf-liberation]  1.07.2-5
ii  freedink-data                      1.08.20111016-1
ii  freepats                           20060219-1
ii  libc6                              2.13-35
ii  libfontconfig1                     2.9.0-7
ii  libsdl-gfx1.2-4                    2.0.23-2
ii  libsdl-image1.2                    1.2.12-2
ii  libsdl-mixer1.2                    1.2.12-3
ii  libsdl-ttf2.0-0                    2.0.11-2
ii  libsdl1.2debian                    1.2.15-5
ii  ttf-liberation                     1.07.2-5

Versions of packages freedink-engine recommends:
ii  freedink-dfarc  3.10-1

freedink-engine suggests no packages.

-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hang.patch
Type: text/x-diff
Size: 858 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-games-devel/attachments/20120927/1e050417/attachment.patch>


More information about the Pkg-games-devel mailing list