[Bug 282993] awk eats all ram
Date: Tue, 26 Nov 2024 23:32:27 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282993
Bug ID: 282993
Summary: awk eats all ram
Product: Base System
Version: 14.1-RELEASE
Hardware: amd64
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: bugs@FreeBSD.org
Reporter: riccardo@torrini.org
I have a very simple parser for windows logs (forwarded as json using nxlog),
created on 13.3 or even before. After update to 14.1 it eats all my memory (ram
and swap).
Here the script:
# tail -qF {a lot of windows log, rotated every hour} | \
awk -F" {" '{printf( "{%s\n", $2 )}' | \
grep --line-buffered 'AUDIT_FAILURE' | jq '{some parsing}' -j -c -M
--unbuffered
I can confirm that this script runned for at least 130 days on 13.3 but after
10 hours on 14.1 top showed 17GB used for awk process (confirmed by ps)
Actually I changed awk filter to perl (I'm sure it is not the best conversion
but works)
perl -F"[[:space:]]{" -e 'print "{@F[1]" ; ' | \
(please not that ram also grow up with perl filter, but much slower)
I have tried to reproduce with [1] [2] and [3] but happens only on [3] :-(
[1] ( while true; do cat /etc/motd; done ) | awk -F'-' '{printf( "%s\n", $2 )}'
> /dev/null
[2] cat /dev/random | hd | awk -F' ' '{printf( "%s\n", $0 )}' > /dev/null
[3] tail -qF /var/log/remote/windows/*log | awk -F' {' '{printf( "{%s\n", $2
)}' > /dev/null
(while running 1, 2 or 3 use top or ps -o rss to check used ram)
VM used to have 8GB of ram and 17GB of swap when 13.3, now has 32GB of ram
(but that's not the point, awk behavior is changed somehow or I'm using it a
lot bad)
--
Riccardo.
--
You are receiving this mail because:
You are the assignee for the bug.