1*3ee4fc2aSCody Peter Mello#
2*3ee4fc2aSCody Peter Mello#   [USEMAP]
3*3ee4fc2aSCody Peter Mello#
4*3ee4fc2aSCody Peter Mello#                            Problem Report gnu/7821
5*3ee4fc2aSCody Peter Mello#
6*3ee4fc2aSCody Peter Mello#   awk in free(): warning: chunk is already free.
7*3ee4fc2aSCody Peter Mello#
8*3ee4fc2aSCody Peter Mello#   Confidential
9*3ee4fc2aSCody Peter Mello#          no
10*3ee4fc2aSCody Peter Mello#
11*3ee4fc2aSCody Peter Mello#   Severity
12*3ee4fc2aSCody Peter Mello#          serious
13*3ee4fc2aSCody Peter Mello#
14*3ee4fc2aSCody Peter Mello#   Priority
15*3ee4fc2aSCody Peter Mello#          medium
16*3ee4fc2aSCody Peter Mello#
17*3ee4fc2aSCody Peter Mello#   Responsible
18*3ee4fc2aSCody Peter Mello#          freebsd-bugs@freebsd.org
19*3ee4fc2aSCody Peter Mello#
20*3ee4fc2aSCody Peter Mello#   State
21*3ee4fc2aSCody Peter Mello#          suspended
22*3ee4fc2aSCody Peter Mello#
23*3ee4fc2aSCody Peter Mello#   Class
24*3ee4fc2aSCody Peter Mello#          sw-bug
25*3ee4fc2aSCody Peter Mello#
26*3ee4fc2aSCody Peter Mello#   Submitter-Id
27*3ee4fc2aSCody Peter Mello#          current-users
28*3ee4fc2aSCody Peter Mello#
29*3ee4fc2aSCody Peter Mello#   Arrival-Date
30*3ee4fc2aSCody Peter Mello#          Thu Sep 3 10:30:00 PDT 1998
31*3ee4fc2aSCody Peter Mello#
32*3ee4fc2aSCody Peter Mello#   Last-Modified
33*3ee4fc2aSCody Peter Mello#          Thu Sep 17 02:04:26 PDT 1998
34*3ee4fc2aSCody Peter Mello#
35*3ee4fc2aSCody Peter Mello#   Originator
36*3ee4fc2aSCody Peter Mello#          Alexander Litvin archer@lucky.net
37*3ee4fc2aSCody Peter Mello#
38*3ee4fc2aSCody Peter Mello#   Organization
39*3ee4fc2aSCody Peter Mello#
40*3ee4fc2aSCody Peter Mello#
41*3ee4fc2aSCody Peter Mello#Lucky Net ltd.
42*3ee4fc2aSCody Peter Mello#
43*3ee4fc2aSCody Peter Mello#   Release
44*3ee4fc2aSCody Peter Mello#          FreeBSD 3.0-CURRENT i386
45*3ee4fc2aSCody Peter Mello#
46*3ee4fc2aSCody Peter Mello#   Environment
47*3ee4fc2aSCody Peter Mello#
48*3ee4fc2aSCody Peter Mello#
49*3ee4fc2aSCody Peter Mello#FreeBSD grape.carrier.kiev.ua 3.0-CURRENT FreeBSD 3.0-CURRENT #121: Thu Sep  3
50*3ee4fc2aSCody Peter Mello#1
51*3ee4fc2aSCody Peter Mello#1:21:44 EEST 1998     archer@grape.carrier.kiev.ua:/usr/src/sys/compile/GRAPE
52*3ee4fc2aSCody Peter Mello#i
53*3ee4fc2aSCody Peter Mello#386
54*3ee4fc2aSCody Peter Mello#
55*3ee4fc2aSCody Peter Mello#   Description
56*3ee4fc2aSCody Peter Mello#
57*3ee4fc2aSCody Peter Mello#
58*3ee4fc2aSCody Peter Mello#The problem first appeared when GNU awk in 3.0-CURRENT was apgraded to
59*3ee4fc2aSCody Peter Mello#3.0.3. I run C-News, which uses awk extensively. After awk apgrade C-News
60*3ee4fc2aSCody Peter Mello#expire stopped to work. It appeared that some GNU awk 3.0.3 programms when
61*3ee4fc2aSCody Peter Mello#given absolutely legitimate input fail, giving out a number of messages:
62*3ee4fc2aSCody Peter Mello#
63*3ee4fc2aSCody Peter Mello#awk in free(): warning: chunk is already free.
64*3ee4fc2aSCody Peter Mello#
65*3ee4fc2aSCody Peter Mello#   How-To-Repeat
66*3ee4fc2aSCody Peter Mello#
67*3ee4fc2aSCody Peter Mello#
68*3ee4fc2aSCody Peter Mello#Run the following awk program (it is cut out of C-News expire scripts).
69*3ee4fc2aSCody Peter Mello#I was not able to cut it down more -- omitting some portions of the
70*3ee4fc2aSCody Peter Mello#code (e.g. OFMT line), make error go away in this case, though it
71*3ee4fc2aSCody Peter Mello#certainly does not fix awk.
72*3ee4fc2aSCody Peter Mello#
73*3ee4fc2aSCody Peter Mello#----------------cut-here----------------
74*3ee4fc2aSCody Peter Mello#!/usr/bin/awk -f
75*3ee4fc2aSCody Peter MelloBEGIN {
76*3ee4fc2aSCody Peter Mello        OFMT = "%.12g"
77*3ee4fc2aSCody Peter Mello        big = 99999999999
78*3ee4fc2aSCody Peter Mello        lowest = big
79*3ee4fc2aSCody Peter Mello        small = 0
80*3ee4fc2aSCody Peter Mello        highest = small
81*3ee4fc2aSCody Peter Mello}
82*3ee4fc2aSCody Peter Mello
83*3ee4fc2aSCody Peter Mello$0 ~ /^[0-9]+$/ {
84*3ee4fc2aSCody Peter Mello        if ($1 < lowest)
85*3ee4fc2aSCody Peter Mello                lowest = $1
86*3ee4fc2aSCody Peter Mello        if ($1 > highest)
87*3ee4fc2aSCody Peter Mello                highest = $1
88*3ee4fc2aSCody Peter Mello        next
89*3ee4fc2aSCody Peter Mello}
90*3ee4fc2aSCody Peter Mello
91*3ee4fc2aSCody Peter Mello# $0 ~ /^[a-z]+/ {
92*3ee4fc2aSCody Peter Mello$0 ~ /^[[:lower:]]+/ {
93*3ee4fc2aSCody Peter Mello        print dir, highest, lowest
94*3ee4fc2aSCody Peter Mello        dir = $0
95*3ee4fc2aSCody Peter Mello        lowest = big
96*3ee4fc2aSCody Peter Mello        highest = small
97*3ee4fc2aSCody Peter Mello}
98*3ee4fc2aSCody Peter Mello#----------------cut-here----------------
99*3ee4fc2aSCody Peter Mello#
100*3ee4fc2aSCody Peter Mello#To get the error, just give this script the following input:
101*3ee4fc2aSCody Peter Mello#----------------cut-here----------------
102*3ee4fc2aSCody Peter Mello#a
103*3ee4fc2aSCody Peter Mello#1
104*3ee4fc2aSCody Peter Mello#b
105*3ee4fc2aSCody Peter Mello#----------------cut-here----------------
106*3ee4fc2aSCody Peter Mello#
107*3ee4fc2aSCody Peter Mello#   Fix
108*3ee4fc2aSCody Peter Mello#
109*3ee4fc2aSCody Peter Mello#
110*3ee4fc2aSCody Peter Mello#I was not able to track the error in awk sources. As a workaround,
111*3ee4fc2aSCody Peter Mello#I just reverted to GNU awk 2.15.5.
112*3ee4fc2aSCody Peter Mello#
113*3ee4fc2aSCody Peter Mello#   Audit-Trail
114*3ee4fc2aSCody Peter Mello#
115*3ee4fc2aSCody Peter Mello#
116*3ee4fc2aSCody Peter Mello#State-Changed-From-To: open-suspended
117*3ee4fc2aSCody Peter Mello#State-Changed-By: phk
118*3ee4fc2aSCody Peter Mello#State-Changed-When: Thu Sep 17 02:04:08 PDT 1998
119*3ee4fc2aSCody Peter Mello#State-Changed-Why:
120*3ee4fc2aSCody Peter Mello#reported to GNU maintainer.
121*3ee4fc2aSCody Peter Mello#
122*3ee4fc2aSCody Peter Mello#   Submit Followup
123*3ee4fc2aSCody Peter Mello#     _________________________________________________________________
124*3ee4fc2aSCody Peter Mello#
125*3ee4fc2aSCody Peter Mello#
126*3ee4fc2aSCody Peter Mello#    www@freebsd.org
127