Greetings! I have a little problem here.. Currently, tama is compiled with -O0, because it segfaults when it is compiled with higher optimization. I guess I shouldn't mention how much this sucks.
Recently, I tried to debug it again (I tried it numerous times in the past, to no avail), and made a nice typescript. The problem is, that some might not be able to reproduce this, for version -9 (or -10?) was compiled with -O2 and worked on some boxen, but not on mine. I'm pretty sure it's not a HW problem, for everything else works fine, and the error occurs at the same spot every time I check. I'm attaching the typescript, if anyone has any idea, please share it with me. Thanks, -- Gergely Nagy \ mhp/|8]
Script started on Sun Oct 7 19:20:54 2001
8638:algernon@iluvatar: /tmp/tama-test] dpkg-source -x tama_1.0-11.dsc
dpkg-source: extracting tama in tama-1.0
8639:algernon@iluvatar: /tmp/tama-test] cd tama-1.0/
8640:algernon@iluvatar: /tmp/tama-test/tama-1.0] ed debian/rules
4459
/-Wall/
CFLAGS = -ansi -pedantic -Wall -O0 -D_GNU_SOURCE
s/-O0/-O2/
p
CFLAGS = -ansi -pedantic -Wall -O2 -D_GNU_SOURCE
w
4459
q
8641:algernon@iluvatar: /tmp/tama-test/tama-1.0] fakeroot debian/rules binary
DEB_BUILD_OPTIONS=debug,nostrip
test -d debian/patched || install -d debian/patched
echo "Patches applied in the Debian version of tama:" > patch-stampT
applying patch debian/patches/01-includes.dpatch... ok.
applying patch debian/patches/02-yearlog.dpatch... ok.
applying patch debian/patches/03-int-main.dpatch... ok.
applying patch debian/patches/04-sigchld.dpatch... ok.
applying patch debian/patches/05-tama.h.dpatch... ok.
applying patch debian/patches/06-deathcheck.dpatch... ok.
applying patch debian/patches/07-diplomatic-weight.dpatch... ok.
mv -f patch-stampT patch-stamp
test -e debian/control || ( echo "debian/control not found"; exit 1 )
make CFLAGS="-ansi -pedantic -Wall -O2 -D_GNU_SOURCE"
make[1]: Entering directory `/tmp/tama-test/tama-1.0'
gcc -ansi -pedantic -Wall -O2 -D_GNU_SOURCE -g -c main.c
In file included from /usr/include/unistd.h:500,
from main.c:90:
/usr/include/bits/confname.h:565: warning: comma at end of enumerator list
gcc -ansi -pedantic -Wall -O2 -D_GNU_SOURCE -g -c exec.c
In file included from /usr/include/unistd.h:500,
from exec.c:9:
/usr/include/bits/confname.h:565: warning: comma at end of enumerator list
gcc -ansi -pedantic -Wall -O2 -D_GNU_SOURCE -g -c api.c
gcc -ansi -pedantic -Wall -O2 -D_GNU_SOURCE -g -c status.c
In file included from /usr/include/unistd.h:500,
from status.c:14:
/usr/include/bits/confname.h:565: warning: comma at end of enumerator list
gcc -ansi -pedantic -Wall -O2 -D_GNU_SOURCE -g -c list.c
In file included from /usr/include/unistd.h:500,
from list.c:10:
/usr/include/bits/confname.h:565: warning: comma at end of enumerator list
gcc -o tama main.o exec.o api.o status.o list.o
make[1]: Leaving directory `/tmp/tama-test/tama-1.0'
test -e debian/control || ( echo "debian/control not found"; exit 1 )
install -d debian/tama/usr/games debian/tama/usr/share/man/man6 \
debian/tama/usr/share/doc/tama debian/tama/usr/lib/menu \
debian/tama/etc/init.d
install -m 0755 tama debian/tama/usr/games/tamad
install -m 0755 debian/local/tama.sh debian/tama/usr/games/tama
install -m 0644 debian/local/tama.6 debian/local/tamad.6 \
debian/tama/usr/share/man/man6/
test -e debian/control || ( echo "debian/control not found"; exit 1 )
test "x`whoami`" = "xroot" || ( echo "You must run this as root!"; exit 1 )
install -m 0644 debian/local/README.Debian \
debian/tama/usr/share/doc/tama
install -m 0644 CHANGES debian/tama/usr/share/doc/tama/changelog
install -m 0644 debian/changelog \
debian/tama/usr/share/doc/tama/changelog.Debian
install -m 0644 debian/local/tama.menu \
debian/tama/usr/lib/menu/tama
install -m 0644 debian/copyright debian/tama/usr/share/doc/tama
install -m 0755 debian/local/tama.init.d \
debian/tama/etc/init.d/tama
gzip -9f debian/tama/usr/share/man/man6/*.6 \
debian/tama/usr/share/doc/tama/changelog \
debian/tama/usr/share/doc/tama/changelog.Debian
find debian/tama -print0 2>/dev/null | xargs -0r chown \
--no-dereference 0.0
find ! -type l -print 0 2>/dev/null | xargs -0r \
chmod go=rX,u+rw,a-s
dpkg-shlibdeps -Tdebian/tama.substvars -dDepends \
debian/tama/usr/games/tamad
install -d debian/tama/DEBIAN
install -m 0644 debian/maint/conffiles debian/tama/DEBIAN/
install -m 0755 debian/maint/postinst debian/maint/postrm \
debian/maint/prerm debian/tama/DEBIAN/
cd debian/tama >/dev/null ;\
find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
dpkg-gencontrol -isp -ptama -Tdebian/tama.substvars \
-Pdebian/tama
dpkg --build debian/tama ..
dpkg-deb: building package `tama' in `../tama_1.0-11_i386.deb'.
8642:algernon@iluvatar: /tmp/tama-test/tama-1.0] cd ..
8646:algernon@iluvatar: /tmp/tama-test] dpkg -i tama_1.0-11_i386.deb
(Reading database ... 74958 files and directories currently installed.)
Preparing to replace tama 1.0-11 (using tama_1.0-11_i386.deb) ...
Stopping net tamagotchi server: tamad.
Unpacking replacement tama ...
Setting up tama (1.0-11) ...
Starting net tamagotchi server: tamad.
8647:algernon@iluvatar: /tmp/tama-test] telnet localhost 9111
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hi! I am your Net Tamagotchi! I love you!!
***************
*********************
****** ********* ******
******* ********* *******
***************************
***************************
****** *********** ******
***** *****
***************
********
What do you wanna call your Tamagotchi? Yamm
Tamagotchi found. Please enter password: homi
Hi! The time limit for this session is 5 minutes
*******
***********
**** *** ****
*************
*** ***** ***
*** ***
*******
Your Tamagotchi is happy and it loves you!
Name: Yamm Age: 19656 hours Weight: 1228 units
An error has occured in the Net Tamagotchi server.
Please report the circumstances which caused this to [EMAIL PROTECTED]
Thank you.
Connection closed by foreign host.
zsh: exit 1 telnet localhost 9111
8649:algernon@iluvatar: /tmp/tama-test] tail -8 /var/log/tama.log
Sun Oct 7 19:24:13 2001 [8208] Starting Net Tamagotchi v1.0 by Milos Glisic,
[EMAIL PROTECTED]
Sun Oct 7 19:24:13 2001 Created socket: s=3
Sun Oct 7 19:24:13 2001 Bound socket to port 9111
Sun Oct 7 19:24:13 2001 Listening for connections...
Sun Oct 7 19:24:35 2001 [8217] Accepted connection from localhost
Sun Oct 7 19:24:37 2001 [8217] Connection closed - purging session
Sun Oct 7 19:24:50 2001 [8219] `Yamm` logged in
Sun Oct 7 19:24:50 2001 Segmentation violation. Client handler exiting.
8657:algernon@iluvatar: /tmp/tama-test] # tama started on another terminal
8660:algernon@iluvatar: /tmp/tama-test] ps axu | grep tama
games 8490 0.0 0.8 1332 552 pts/2 S 19:28 0:00 /usr/games/tamad
algernon 8500 0.5 1.7 2432 1124 pts/1 S 19:28 0:00 /bin/sh /usr/games/tama
games 8502 0.0 0.8 1332 552 pts/2 S 19:28 0:00 /usr/games/tamad
algernon 8504 1.0 0.9 1616 584 pts/9 S 19:28 0:00 grep tama
8669:algernon@iluvatar: /tmp/tama-test] su -c gdb
GNU gdb 5.0.90-cvs (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
(gdb) attach 8502
Attaching to process 8502
0x400f5de2 in ?? ()
(gdb) symbol-file tama-1.0/tama
Reading symbols from tama-1.0/tama...done.
(gdb) continue
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x08049807 in main (argc=Cannot access memory at address 0xbf00737a
) at main.c:355
355 while(1) {
(gdb) l
350
351 printf("%s [%d] `%s` logged in\n", logtime(), getpid(), name);
352 put("Hi! The time limit for this session is 5 minutes\n");
353 status(name, 1);
354
355 while(1) {
356 do {
357 buf[0]='\0';
358 put("> ");
359 get(buf);
(gdb) print buf
Cannot access memory at address 0xbf007292
(gdb) print name
Cannot access memory at address 0xbf00727e
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: , process 8502
8670:algernon@iluvatar: /tmp/tama-test] ps axu | grep tama
games 8490 0.0 0.8 1332 552 pts/2 S 19:28 0:00 /usr/games/tamad
algernon 8521 0.5 1.7 2432 1124 pts/1 S 19:31 0:00 /bin/sh /usr/games/tama
games 8523 0.0 0.8 1332 552 pts/2 S 19:31 0:00 /usr/games/tamad
algernon 8525 0.0 0.9 1616 584 pts/9 S 19:31 0:00 grep tama
8672:algernon@iluvatar: /tmp/tama-test] su -c gdb
GNU gdb 5.0.90-cvs (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
(gdb) attach 8523
Attaching to process 8523
0x400f5de2 in ?? ()
(gdb) symbol-file tama-1.0/tama
Reading symbols from tama-1.0/tama...done.
(gdb) break put
Breakpoint 1 at 0x8049049: file main.c, line 179.
(gdb) c
Continuing.
Breakpoint 1, put (buf=0x804c080 "Tamagotchi found. Please enter password: ") at
main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) c
Continuing.
Breakpoint 1, put (buf=0x804c100 "Hi! The time limit for this session is 5 minutes\n")
at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) l
174 /* sends output to client - extended client support */
175 void put(char *buf)
176 {
177 int ctr;
178
179 for(ctr=0; ctr<strlen(buf); ctr++) {
180 send(s, buf+ctr, 1, 0);
181 if(buf[ctr]=='\n')
182 send(s, "\r", 1, 0);
183 }
(gdb) print buf
$1 = 0x804c100 "Hi! The time limit for this session is 5 minutes\n"
(gdb) c
Continuing.
Breakpoint 1, put (
buf=0x804caa0 "\n *******\n ", '*' <repeats 11 times>, "\n **** *** ****\n
", '*' <repeats 13 times>, "\n *** ***** ***\n *** ***\n *******\n\nYour
Tamagotchi is happy and it loves you!\n") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) l
174 /* sends output to client - extended client support */
175 void put(char *buf)
176 {
177 int ctr;
178
179 for(ctr=0; ctr<strlen(buf); ctr++) {
180 send(s, buf+ctr, 1, 0);
181 if(buf[ctr]=='\n')
182 send(s, "\r", 1, 0);
183 }
(gdb) print buf
$2 = 0x804caa0 "\n *******\n ", '*' <repeats 11 times>, "\n **** *** ****\n ",
'*' <repeats 13 times>, "\n *** ***** ***\n *** ***\n *******\n\nYour
Tamagotchi is happy and it loves you!\n"
(gdb) c
Continuing.
Breakpoint 1, put (buf=0x804cbe1 "\nName: ") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) c
Continuing.
Breakpoint 1, put (buf=0xbffffc08 "Yamm") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) c
Continuing.
Breakpoint 1, put (buf=0xbffffb4c "\t\tAge: 19657 hours") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) c
Continuing.
Breakpoint 1, put (buf=0x804cbf9 "\t\tWeight: ") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) c
Continuing.
Breakpoint 1, put (buf=0xbffffb4c "1228 units\n") at main.c:179
179 for(ctr=0; ctr<strlen(buf); ctr++) {
(gdb) break status
Breakpoint 2 at 0x804b499: file status.c, line 27.
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x08049807 in main (argc=Cannot access memory at address 0xbf00737a
) at main.c:355
355 while(1) {
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: , process 8523
8673:algernon@iluvatar: /tmp/tama-test] ps axu | grep tama
games 8490 0.0 0.8 1332 552 pts/2 S 19:28 0:00 /usr/games/tamad
algernon 8527 1.0 1.7 2432 1124 pts/1 S 19:32 0:00 /bin/sh /usr/games/tama
games 8529 0.0 0.8 1332 552 pts/2 S 19:32 0:00 /usr/games/tamad
algernon 8531 0.0 0.9 1616 584 pts/9 S 19:32 0:00 grep tama
8675:algernon@iluvatar: /tmp/tama-test] su -c gdb
GNU gdb 5.0.90-cvs (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
(gdb) attach 8529
Attaching to process 8529
0x400f5de2 in ?? ()
(gdb) symbol-file tama-1.0/tama
Reading symbols from tama-1.0/tama...done.
(gdb) break status
Breakpoint 1 at 0x804b499: file status.c, line 27.
(gdb) c
Continuing.
Breakpoint 1, status (name=0xbffffc08 "Yamm", proc=1) at status.c:27
27 diff=(time(NULL)-gettime(name))/3600;
(gdb) n
28 if((time(NULL)-getpet(name))/3600 < LONELYTIME)
(gdb) l
23 {
24 int diff, knockoff;
25 char tmp[MAXNAME];
26
27 diff=(time(NULL)-gettime(name))/3600;
28 if((time(NULL)-getpet(name))/3600 < LONELYTIME)
29 diff--;
30
31 if(proc > 0) {
32 if((diff-HUNGERTIME)>0) {
(gdb) display name
1: name = 0xbffffc08 "Yamm"
(gdb) n
29 diff--;
1: name = 0xbffffc08 "Yamm"
(gdb)
31 if(proc > 0) {
1: name = 0xbffffc08 "Yamm"
(gdb)
32 if((diff-HUNGERTIME)>0) {
1: name = 0xbffffc08 "Yamm"
(gdb)
41 if(getweight(name)<1) {
1: name = 0xbffffc08 "Yamm"
(gdb)
48 if(diff < HUNGERTIME) {
1: name = 0xbffffc08 "Yamm"
(gdb)
49 if((time(NULL)-getpet(name))/3600 >= LONELYTIME)
1: name = 0xbffffc08 "Yamm"
(gdb)
51 else put(HAPPY);
1: name = 0xbffffc08 "Yamm"
(gdb)
52 }
1: name = 0xbffffc08 "Yamm"
(gdb)
67 put("\nName: ");
1: name = 0xbffffc08 "Yamm"
(gdb)
68 put(name);
1: name = 0xbffffc08 "Yamm"
(gdb)
69 sprintf(tmp, "\t\tAge: %d hours",
((int)time(NULL)-getbirth(name))/3600);
1: name = 0xbffffc08 "Yamm"
(gdb)
70 put(tmp);
1: name = 0xbffffc08 "Yamm"
(gdb)
71 put("\t\tWeight: ");
1: name = 0xbffffc08 "Yamm"
(gdb)
72 sprintf(tmp, "%d units\n", getweight(name));
1: name = 0xbffffc08 "Yamm"
(gdb)
73 put(tmp);
1: name = 0xbffffc08 "Yamm"
(gdb)
76 }
1: name = 0xbffffc08 "Yamm"
(gdb) l
71 put("\t\tWeight: ");
72 sprintf(tmp, "%d units\n", getweight(name));
73 put(tmp);
74
75 return;
76 }
(gdb) s
main (argc=Cannot access memory at address 0xbf00737a
) at main.c:355
355 while(1) {
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: , process 8529
8676:algernon@iluvatar: /tmp/tama-test] # this is where I have up. WTF is argc not
accessible??
8677:algernon@iluvatar: /tmp/tama-test]
Script done on Sun Oct 7 19:36:07 2001
msg04751/pgp00000.pgp
Description: PGP signature

