bug-gawk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-gawk] Does gawk deal with signal pipe correctly?


From: Peng Yu
Subject: Re: [bug-gawk] Does gawk deal with signal pipe correctly?
Date: Sun, 17 Jun 2018 06:46:19 -0500

$ awk --version | head -n 1
GNU Awk 4.2.0, API: 2.0 (GNU MPFR 4.0.1, GNU MP 6.1.2)

On Sun, Jun 17, 2018 at 6:34 AM,  <address@hidden> wrote:
> What is the output from gawk --version?
>
> Peng Yu <address@hidden> wrote:
>
>> Here is what I have. It is tested on a virtual machine (hosted on KVM
>> on another Ubuntu physical machine). Are you able to get the same
>> version vm to test?
>>
>> $ cat DCt7x2zD | awk '{ print }' | head -n 1
>>
>> $ echo address@hidden
>> 0 141 0
>> $ cat DCt7x2zD | awk '{ print }' | head -n 1
>>
>> $ echo address@hidden
>> 0 1 0
>> $ cat /etc/issue
>> Ubuntu 14.04.5 LTS \n \l
>>
>> $ uname -a
>> Linux caph 3.13.0-144-generic #193-Ubuntu SMP Thu Mar 15 17:03:53 UTC
>> 2018 x86_64 GNU/Linux
>>
>> I also tried on a non vm Ubuntu machine. But I don't see 0 1 0, though.
>>
>> On Sun, Jun 17, 2018 at 2:06 AM,  <address@hidden> wrote:
>> > On a Redhat system using current code and your file I got 0 0 0 one time
>> > and 0 141 0 the rest of the times I tried. It appears to be a timing
>> > issue.
>> >
>> > The pipe(7) man page says
>> >
>> >         In Linux versions before 2.6.11, the capacity of a pipe was the 
>> > same as
>> >         the system page size (e.g., 4096 bytes on i386).  Since Linux 
>> > 2.6.11,
>> >         the pipe capacity is 65536 bytes.
>> >
>> > Your file is a little over 18000 bytes, so it fits entirely into a
>> > single pipe buffer.  It looks like the 0 0 0 happens when gawk succeeds to
>> > read and write the data before head runs, and SIGPIPE otherwise.
>> >
>> > Unless there is a way to reproduce this consistently so that I can
>> > trace the code in a debugger, there's not a lot more I can do.
>> >
>> > Thanks,
>> >
>> > Arnold
>> >
>> > Peng Yu <address@hidden> wrote:
>> >
>> >> You must use the file that I provided to reproduce the problem `seq
>> >> 10000000` will not reveal the problem as I have shown in my original
>> >> post.
>> >>
>> >> I also tested on Ubuntu. Sometimes it shows 0 1 0 and sometimes it shows 
>> >> 0 0 0.
>> >>
>> >> $ cat DCt7x2zD | awk '{ print }' | head -n 1
>> >>
>> >> $ echo address@hidden
>> >> 0 1 0
>> >> $ awk --version | head -n 1
>> >> GNU Awk 4.2.0, API: 2.0 (GNU MPFR 4.0.1, GNU MP 6.1.2)
>> >>
>> >>
>> >> On Sat, Jun 16, 2018 at 1:51 PM,  <address@hidden> wrote:
>> >> > Hello.
>> >> >
>> >> > I don't think this is an awk issue.  In any case, I can't
>> >> > reproduce the problem:
>> >> >
>> >> >         $ gawk --version | sed 1q
>> >> >         GNU Awk 4.2.0, API: 2.0 (GNU MPFR 3.1.4, GNU MP 6.1.0)
>> >> >         [tanda:pts/2 arnold]$ for i in nawk mawk gawk
>> >> >         > do
>> >> >         > echo === $i
>> >> >         > seq 10000000 | $i '{ print }' | head -1
>> >> >         > echo address@hidden
>> >> >         > done
>> >> >         === nawk
>> >> >         1
>> >> >         141 141 0
>> >> >         === mawk
>> >> >         1
>> >> >         141 141 0
>> >> >         === gawk
>> >> >         1
>> >> >         141 141 0
>> >> >
>> >> > Arnold
>> >> >
>> >> > Peng Yu <address@hidden> wrote:
>> >> >
>> >> >> Hi,
>> >> >>
>> >> >> $ seq 10000000 | awk -e '{ print }' | head -n 1
>> >> >> 1
>> >> >> $ echo "address@hidden"
>> >> >> 141 141 0
>> >> >> $ tmpfile=$(mktemp -u)
>> >> >> $ seq 10000000 > "$tmpfile"
>> >> >> $ cat "$tmpfile" | awk -e '{ print }' | head -n 1
>> >> >> 1
>> >> >> $ echo "address@hidden"
>> >> >> 141 141 0
>> >> >>
>> >> >> In the following case, I see that awk sometimes return 1 instead of 0
>> >> >> for the input tmp2.txt (download at
>> >> >> https://pastebin.com/raw/DCt7x2zD). But I never see awk returns 141
>> >> >> for this file. Is this behavior of awk correct? Should it always
>> >> >> return 141?
>> >> >>
>> >> >> $ cat < tmp2.txt | awk -e '{ print }' | head -n 1
>> >> >>
>> >> >> $ echo address@hidden
>> >> >> 0 1 0
>> >> >>
>> >> >> --
>> >> >> Regards,
>> >> >> Peng
>> >>
>> >>
>> >>
>> >> --
>> >> Regards,
>> >> Peng
>>
>>
>>
>> --
>> Regards,
>> Peng



-- 
Regards,
Peng



reply via email to

[Prev in Thread] Current Thread [Next in Thread]