[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: |
Wed, 25 Nov 2020 09:03:18 +0100 |
User-agent: |
astroid/0.15.0 (https://github.com/astroidmail/astroid) |
Hi Akim,
On November 25, 2020 8:00 am Akim Demaille wrote:
> Hi Martin,
>
>> Le 24 nov. 2020 à 11:35, Martin Rehak <martin.rehak@oracle.com> a écrit :
>>
>> Hi Akim,
>>
>>> As you can see in the od output, I do get the NUL byte in the quoted
>>> source line:
>>>
>>> 0000060 sp sp sp 1 sp | sp ***nul*** nl sp sp sp sp sp sp
>>> |
>>>
>>> Do you have it too?
>>
>> Yes, I have if I use C locales:
>>
>> $ LC_ALL=C ./src/bison -fcaret /tmp/foo.y 2>&1 | xxd
>> 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 ^.
>
> Yes, I can see it, it seems correct.
>
>
>> And it is slightly different to what I get if I use (my default)
>> en_US.UTF-8:[...]
>> But it still fails even if I use:
>>
>> $ /usr/bin/env LC_ALL=C /usr/gnu/bin/make check
>>
>> Any hint, please?
>
> The test suite runs with LC_ALL=C already, this is not needed.
>
> So it may well be that the problem is actually the perl snippet I
> used to "reveal" the invalid characters. Please try this:
>
> $ printf "\0\n" > /tmp/foo.y
> $ LC_ALL=C ./src/bison -fcaret /tmp/foo.y >/tmp/foo.log 2>&1
> $ 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
> | ^
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
| ^
In case you are not happy with debugging this case (and I would
understand it) is there a way how to disable it?
Otherwise I am fine to assist you in digging further. Any other hint,
please?
Thank you
--
m.