24
by Arnold D. Robbins
Move to gawk-3.0.3. |
1 |
BEGIN { |
2 |
print "000800" > "seq" |
|
3 |
close("seq") |
|
4 |
ARGV[1] = "seq" |
|
5 |
ARGC = 2 |
|
6 |
}
|
|
7 |
||
8 |
{ printf "%06d", $1 + 1 >"seq"; |
|
9 |
printf "%06d", $1 + 1 } |
|
10 |
# Date: Mon, 20 Jan 1997 15:14:06 -0600 (CST)
|
|
11 |
# From: Dave Bodenstab <emory!synet.net!imdave>
|
|
12 |
# To: bug-gnu-utils@prep.ai.mit.edu
|
|
13 |
# Subject: GNU awk 3.0.2 core dump
|
|
14 |
# Cc: arnold@gnu.ai.mit.edu
|
|
15 |
#
|
|
16 |
# The following program produces a core file on my FreeBSD system:
|
|
17 |
#
|
|
18 |
# bash$ echo 000800 >/tmp/seq
|
|
19 |
# bash$ gawk '{ printf "%06d", $1 + 1 >"/tmp/seq";
|
|
20 |
# printf "%06d", $1 + 1 }' /tmp/seq
|
|
21 |
#
|
|
22 |
# This fragment comes from mgetty+sendfax.
|
|
23 |
#
|
|
24 |
# Here is the trace:
|
|
25 |
#
|
|
26 |
# Script started on Mon Jan 20 15:09:04 1997
|
|
27 |
# bash$ gawk --version
|
|
28 |
# GNU Awk 3.0.2
|
|
29 |
# Copyright (C) 1989, 1991-1996 Free Software Foundation.
|
|
30 |
#
|
|
31 |
# This program is free software; you can redistribute it and/or modify
|
|
32 |
# it under the terms of the GNU General Public License as published by
|
|
33 |
# the Free Software Foundation; either version 2 of the License, or
|
|
34 |
# (at your option) any later version.
|
|
35 |
#
|
|
36 |
# This program is distributed in the hope that it will be useful,
|
|
37 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
38 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
39 |
# GNU General Public License for more details.
|
|
40 |
#
|
|
41 |
# You should have received a copy of the GNU General Public License
|
|
42 |
# along with this program; if not, write to the Free Software
|
|
33
by Arnold D. Robbins
Move to gawk 3.1.5. |
43 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
24
by Arnold D. Robbins
Move to gawk-3.0.3. |
44 |
# bash$ gdb gawk
|
45 |
# GDB is free software and you are welcome to distribute copies of it
|
|
46 |
# under certain conditions; type "show copying" to see the conditions.
|
|
47 |
# There is absolutely no warranty for GDB; type "show warranty" for details.
|
|
48 |
# GDB 4.13 (i386-unknown-freebsd),
|
|
49 |
# Copyright 1994 Free Software Foundation, Inc...
|
|
50 |
# (gdb) shell echo 000800 >/tmp/seq
|
|
51 |
# (gdb) r '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }(gdb) r '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }' /tmp/seq
|
|
52 |
# Starting program: /scratch/archive/src/cmd/gnuawk-3.0.2/gawk '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }' /tmp/seq
|
|
53 |
#
|
|
54 |
# Program received signal SIGBUS, Bus error.
|
|
55 |
# 0xd86f in def_parse_field (up_to=1, buf=0x37704, len=6, fs=0x3b240, rp=0x0,
|
|
56 |
# set=0xce6c <set_field>, n=0x0) at field.c:391
|
|
57 |
# 391 sav = *end;
|
|
58 |
# (gdb) bt
|
|
59 |
# #0 0xd86f in def_parse_field (up_to=1, buf=0x37704, len=6, fs=0x3b240,
|
|
60 |
# rp=0x0, set=0xce6c <set_field>, n=0x0) at field.c:391
|
|
61 |
# #1 0xddb1 in get_field (requested=1, assign=0x0) at field.c:669
|
|
62 |
# #2 0xc25d in r_get_lhs (ptr=0x3b9b4, assign=0x0) at eval.c:1339
|
|
63 |
# #3 0x9ab0 in r_tree_eval (tree=0x3b9b4, iscond=0) at eval.c:604
|
|
64 |
# #4 0xa5f1 in r_tree_eval (tree=0x3b9fc, iscond=0) at eval.c:745
|
|
65 |
# #5 0x4661 in format_tree (fmt_string=0x3e040 "%06d", n0=0, carg=0x3ba20)
|
|
66 |
# at builtin.c:620
|
|
67 |
# #6 0x5beb in do_sprintf (tree=0x3b96c) at builtin.c:809
|
|
68 |
# #7 0x5cd5 in do_printf (tree=0x3ba8c) at builtin.c:844
|
|
69 |
# #8 0x9271 in interpret (tree=0x3ba8c) at eval.c:465
|
|
70 |
# #9 0x8ca3 in interpret (tree=0x3bbd0) at eval.c:308
|
|
71 |
# #10 0x8c34 in interpret (tree=0x3bc18) at eval.c:292
|
|
72 |
# #11 0xf069 in do_input () at io.c:312
|
|
73 |
# #12 0x12ba9 in main (argc=3, argv=0xefbfd538) at main.c:393
|
|
74 |
# (gdb) l
|
|
75 |
# 386 *buf += len;
|
|
76 |
# 387 return nf;
|
|
77 |
# 388 }
|
|
78 |
# 389
|
|
79 |
# 390 /* before doing anything save the char at *end */
|
|
80 |
# 391 sav = *end;
|
|
81 |
# 392 /* because it will be destroyed now: */
|
|
82 |
# 393
|
|
83 |
# 394 *end = ' '; /* sentinel character */
|
|
84 |
# 395 for (; nf < up_to; scan++) {
|
|
85 |
# (gdb) print end
|
|
86 |
# $1 = 0x804d006 <Error reading address 0x804d006: No such file or directory>
|
|
87 |
# (gdb) print buf
|
|
88 |
# $2 = (char **) 0x37704
|
|
89 |
# (gdb) print *buf
|
|
90 |
# $3 = 0x804d000 <Error reading address 0x804d000: No such file or directory>
|
|
91 |
# (gdb) q
|
|
92 |
# The program is running. Quit anyway (and kill it)? (y or n) y
|
|
93 |
# bash$ exit
|
|
94 |
#
|
|
95 |
# Script done on Mon Jan 20 15:11:07 1997
|
|
96 |
#
|
|
97 |
# Dave Bodenstab
|
|
98 |
# imdave@synet.net
|