github.com/benhoyt/goawk@v1.8.1/testdata/gawk/clobber.awk (about)

     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
    43  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    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