[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Invalid inputs FAILED (input.at:102) on Solaris
From: |
Martin Rehak |
Subject: |
Re: Invalid inputs FAILED (input.at:102) on Solaris |
Date: |
Mon, 07 Dec 2020 17:47:26 +0100 |
User-agent: |
astroid/0.15.0 (https://github.com/astroidmail/astroid) |
Hi Akim,
On December 4, 2020 7:27 am Akim Demaille wrote:
> Hi Martin,
>
>> Le 30 nov. 2020 à 16:56, Martin Rehak <martin.rehak@oracle.com> a écrit :
>>
>> Hi Akim,
>>
>> On November 26, 2020 8:27 am Akim Demaille wrote:
>>> Hi Martin,
>>>
>>>> Le 25 nov. 2020 à 09:03, Martin Rehak <martin.rehak@oracle.com> a écrit :
>>>>
>>>> Hi Akim,
>>>>
>>>> Strange, absolutely same output:
>>>>
>>>> $ printf "\0\n" > /tmp/foo.y
>>>> $ LC_ALL=C ./src/bison -fcaret /tmp/foo.y >/tmp/foo.log 2>&1
>>>> ?1$ xxd /tmp/foo.log
>>>> 00000000: 2f74 6d70 2f66 6f6f 2e79 3a31 2e31 3a20 /tmp/foo.y:1.1:
>>>> 00000010: 6572 726f 723a 2069 6e76 616c 6964 2063 error: invalid c
>>>> 00000020: 6861 7261 6374 6572 3a20 275c 3027 0a20 haracter: '\0'.
>>>> 00000030: 2020 2031 207c 2000 0a20 2020 2020 207c 1 | .. |
>>>> 00000040: 205e 0a ^.
>>>> $ perl -p -e 's{([\0\377])}{sprintf "\\x%02x", ord($1)}ge' /tmp/foo.log
>>>> /tmp/foo.y:1.1: error: invalid character: '\0'
>>>> 1 | \x00
>>>> | ^
>>>
>>> I am confused. Please run this:
>>>
>>> make check-local TESTSUITEFLAGS='-d 4'
>>>
>>> and wrap a tarball of tests/testsuite.dir/004 and send it.
>>>
>>>> In case you are not happy with debugging this case (and I would
>>>> understand it) is there a way how to disable it?
>>
>> Tarball is attached.
>
> The stderr file in your tarball starts with:
>
> input.y:1.1-2: error: invalid characters: '\0\001\002\377?'
> 1 | ^A^BM-^??
> | ^~
> input.y:2.2: error: invalid null character
> 2 | ""
> | ^
>
> In other words, the NUL byte is really not there. For some reason
> when you ran the shorter example above the NUL byte was properly
> output, but not when there is another character after it.
>
> The function which is at work here is location_caret in src/location.c.
> It uses Gnulib's mbchar.h.
>
> I have made a stripped down version of this routine in this tarball:
>
> https://urldefense.com/v3/__https://www.lrde.epita.fr/*akim/private/bison/bison-3.7.4.136-0e78a-dirty.tar.gz__;fg!!GqivPVa7Brio!OoEllf4EXPgqSG1AEwmvKYVYVJ_ZxMNnjWQEK7cq6T7Bgs9ekKcKsUlYH_lsP5nmGQ$
>
> https://urldefense.com/v3/__https://www.lrde.epita.fr/*akim/private/bison/bison-3.7.4.136-0e78a-dirty.tar.lz__;fg!!GqivPVa7Brio!OoEllf4EXPgqSG1AEwmvKYVYVJ_ZxMNnjWQEK7cq6T7Bgs9ekKcKsUlYH_mGBczwDg$
>
> https://urldefense.com/v3/__https://www.lrde.epita.fr/*akim/private/bison/bison-3.7.4.136-0e78a-dirty.tar.xz__;fg!!GqivPVa7Brio!OoEllf4EXPgqSG1AEwmvKYVYVJ_ZxMNnjWQEK7cq6T7Bgs9ekKcKsUlYH_n0AvB7mg$
>
>
> Once compiled, src/mbcat should imitate what bison does when it quotes
> the input. So could you feed it with tests/testsuite.dir/004/input.y
> and see what difference there is between the input and the output?
>
> ./src/mbcat tests/testsuite.dir/004/input.y >/tmp/out.y
> diff tests/testsuite.dir/004/input.y /tmp/out.y
>
> And if there are diffs, try to make them visible (cat -v for instance).
> Or attach /tmp/out.y.
So I am puzzled even more.
$ ./src/mbcat tests/testsuite.dir/004/input.y >/tmp/out.y
$ diff tests/testsuite.dir/004/input.y /tmp/out.y
$ echo $?
0
$ cat -v /tmp/out.y
^@^A^BM-^??
"^@"
%%
?
default: 'a' }
%&
%a-does-not-exist
%-
%{
It's fine that we have bison working. But I don't understand the test
failing. :) And it still does:
$ gmake check-local TESTSUITEFLAGS='-d 4'
...
/bin/bash
/builds/mrehak/workspace/bison/components/bison/bison-3.7.3/tests/testsuite -C
tests -d 4
## --------------------------- ##
## GNU Bison 3.7.3 test suite. ##
## --------------------------- ##
4: Invalid inputs FAILED (input.at:102)
## ------------- ##
## Test results. ##
## ------------- ##
ERROR: 1 test was run,
Any idea, please?
Thanks
--
Martin