bug-bison
[Top][All Lists]
Advanced

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

Re: Bison 3.0.3 (stable)


From: Akim Demaille
Subject: Re: Bison 3.0.3 (stable)
Date: Mon, 19 Jan 2015 18:04:30 +0100

[Resent with a compressed log to keep the message size reasonable]

> Le 19 janv. 2015 à 09:37, Thomas Jahns <address@hidden> a écrit :
> 
> Hello,

Hi Thomas,

> I've encountered some bugs when running the bison 3.0.3 tests/testsuite on 
> AIX 6.1 with xlc/xlC 11.1.0.17 and building for the 64bit API.
> 
> Please see the archive of log and failed directories at
> 
> <https://cloud.dkrz.de/v1/dkrz_52d098b8-a94b-444e-a318-f7b072f8e0d4/bug-reports/20150116bison-3.0.3-testsuite.tar.xz?temp_url_sig=c448096487a5e4bc96631d616b0716850a86fdd8&temp_url_expires=1422021482>
> 
> The link is valid till Friday. But I can provide a renewed one easily.

For sake of the mailing list archive, I attach below your
testsuite.log.

> So far I've looked into some of the bugs, and most seem unrelated to bison 
> itself, but rather specific problems in the testsuite:
> 
> 095: triggers some internal error in xlC, unfortunately our service contract 
> expired last year. I assume the specific problem could be tested for and the 
> test skipped then.

95. output.at:264: testing Output file name: address@hidden&*()-=_+{}[]|\:;<>, 
.' ...
/sw/src/bison/bison-3.0.3/tests/output.at:264: touch 
"address@hidden&*()-=_+{}[]|\\:;<>, .'.tmp" || exit 77
/sw/src/bison/bison-3.0.3/tests/output.at:264: bison -fno-caret -o 
"address@hidden&*()-=_+{}[]|\\:;<>, .'.c" 
--defines="address@hidden&*()-=_+{}[]|\\:;<>, .'.h" glr.y
/sw/src/bison/bison-3.0.3/tests/output.at:264: ls 
"address@hidden&*()-=_+{}[]|\\:;<>, .'.c" "address@hidden&*()-=_+{}[]|\\:;<>, 
.'.h"
stdout:
address@hidden&*()-=_+{}[]|\:;<>, .'.c
address@hidden&*()-=_+{}[]|\:;<>, .'.h
/sw/src/bison/bison-3.0.3/tests/output.at:264: $BISON_C_WORKS
stderr:
stdout:
/sw/src/bison/bison-3.0.3/tests/output.at:264: $CC $CFLAGS $CPPFLAGS -c -o 
glr.o -c "address@hidden&*()-=_+{}[]|\\:;<>, .'.c" 
stderr:
stdout:
/sw/src/bison/bison-3.0.3/tests/output.at:264: bison -fno-caret -o 
"address@hidden&*()-=_+{}[]|\\:;<>, .'.cc" 
--defines="address@hidden&*()-=_+{}[]|\\:;<>, .'.hh" cxx.y
/sw/src/bison/bison-3.0.3/tests/output.at:264: ls 
"address@hidden&*()-=_+{}[]|\\:;<>, .'.cc" "address@hidden&*()-=_+{}[]|\\:;<>, 
.'.hh"
stdout:
address@hidden&*()-=_+{}[]|\:;<>, .'.cc
address@hidden&*()-=_+{}[]|\:;<>, .'.hh
/sw/src/bison/bison-3.0.3/tests/output.at:264: $BISON_CXX_WORKS
stderr:
stdout:
/sw/src/bison/bison-3.0.3/tests/output.at:264: $CXX $CXXFLAGS $CPPFLAGS -c -o 
cxx.o -c "address@hidden&*()-=_+{}[]|\\:;<>, .'.cc" 
stderr:
   1500-004: (U) INTERNAL COMPILER ERROR while compiling yy::parser::~parser(). 
 Compilation ended.  Contact your Service Representative and provide the 
following information: Internal abort. For more information visit: 
http://www.ibm.com/support/docview.wss?uid=swg21110810
stdout:
/sw/src/bison/bison-3.0.3/tests/output.at:264: exit code was 1, expected 0
95. output.at:264: 95. Output file name: address@hidden&*()-=_+{}[]|\:;<>, .' 
(output.at:264): FAILED (output.at:264)

That's weird.  I have no idea what we might be doing here
that troubles it.

> 189: the error output from xlC should probably be normalized in 
> AT_SYNCLINES_COMPILE

189. synclines.at:191: testing %union name syncline ...
/sw/src/bison/bison-3.0.3/tests/synclines.at:207: bison -fno-caret -o input.c 
input.y
/sw/src/bison/bison-3.0.3/tests/synclines.at:208: $CC $CFLAGS $CPPFLAGS -c 
input.c
stderr:
"input.y", line 1.7: 1506-275 (S) Unexpected text 'break' encountered.
"input.y", line 1.1: 1506-885 (S) An anonymous union or struct declared at file 
scope must be static.
"input.y", line 1.15: 1506-275 (S) Unexpected text 'break' encountered.
"input.y", line 7.8: 1506-166 (S) Definition of function YYSTYPE requires 
parentheses.
"input.y", line 7.16: 1506-276 (S) Syntax error: possible missing '{'?
"input.c", line 310.3: 1506-045 (S) Undeclared identifier yytype_int16.
"input.c", line 311.3: 1506-045 (S) Undeclared identifier YYSTYPE.
"input.c", line 387.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 387.27: 1506-276 (S) Syntax error: possible missing '{'?
"input.c", line 415.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 455.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 458.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 463.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 466.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 469.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 472.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 475.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 483.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 488.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 495.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
/sw/src/bison/bison-3.0.3/tests/synclines.at:208: $PERL -p -0777 - stderr <<\EOF
 # 1. Remove useless lines.

 # distcc clutter.
 s/^distcc\[\d+\] .*\n//gm;
 # c vs. c++.
 s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
 # Function context.
 s/^[^:]*: In function '[^']+':\n//gm;
 # Caret error.
 s/^ *#error.*\n *\^\n//gm;
 # Number of errors.
 s/^1 error generated\.\n//gm;

 # 2. Normalize the lines we kept.

 # Remove column.
 s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
 # Map all combinations of "error: " and "#error: " to "#error ".
 s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
EOF

stdout:
"input.y", line 1.7: 1506-275 (S) Unexpected text 'break' encountered.
"input.y", line 1.1: 1506-885 (S) An anonymous union or struct declared at file 
scope must be static.
"input.y", line 1.15: 1506-275 (S) Unexpected text 'break' encountered.
"input.y", line 7.8: 1506-166 (S) Definition of function YYSTYPE requires 
parentheses.
"input.y", line 7.16: 1506-276 (S) Syntax error: possible missing '{'?
"input.c", line 310.3: 1506-045 (S) Undeclared identifier yytype_int16.
"input.c", line 311.3: 1506-045 (S) Undeclared identifier YYSTYPE.
"input.c", line 387.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 387.27: 1506-276 (S) Syntax error: possible missing '{'?
"input.c", line 415.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 455.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 458.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 463.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 466.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 469.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 472.1: 1506-277 (S) Syntax error: possible missing ';' or ','?
"input.c", line 475.14: 1506-166 (S) Definition of function yytype_int8 
requires parentheses.
"input.c", line 483.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 488.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
"input.c", line 495.14: 1506-166 (S) Definition of function yytype_uint8 
requires parentheses.
/sw/src/bison/bison-3.0.3/tests/synclines.at:209: grep '^input.y:1' stdout
stdout:
/sw/src/bison/bison-3.0.3/tests/synclines.at:209: exit code was 1, expected 0

The point of this test is to check that the location of an
invalid identifier is properly reported.  The input file is:

%union break
{
 char dummy;
}
%{
void yyerror (const char *msg);
int yylex (void);
%}
%%
exp: '0';
%%

So it's on purpose that we have this 'break' there.  However, it seems
that your compiler's error recovery is not sufficient, hence (I guess)
all the other messages.

I'll try to find a means to avoid that.


> 241, 440-443, 463, 464 these can possibly be cured by choosing another 
> language level with compiler option -qlanglvl=, but there's so many to choose 
> from. Is the version of C++ bison would like documented somewhere?

I don't know :)  There weren't that many C++s before.  It aims at C++98/C++03.

> 426  427  428  429  430  431 432: looks like repetitions of basically the 
> same bug.

Well, this is surprising:

426. c++.at:371: testing Variants lalr1.cc  ...
/sw/src/bison/bison-3.0.3/tests/c++.at:371: bison -fno-caret -o list.cc list.y
/sw/src/bison/bison-3.0.3/tests/c++.at:371: $BISON_CXX_WORKS
stderr:
stdout:
/sw/src/bison/bison-3.0.3/tests/c++.at:371: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS 
-o list list.cc $LIBS
stderr:
stdout:
/sw/src/bison/bison-3.0.3/tests/c++.at:371:  $PREPARSER ./list
stderr:
Destroy: ""
Destroy: "0"
Destroy: (0)
Destroy: (0)
Destroy: 1
Destroy: "1"
Destroy: ()
Destroy: ""
Destroy: "2"
Destroy: ()
Destroy: ""
Destroy: 3
Destroy: ()
Destroy: ""
Destroy: "4"
Destroy: ()
Destroy: ()
Destroy: 5
Destroy: ()
Destroy: ""
Destroy: "6"
Destroy: ()
Destroy: (0, 1, 2, 4, 6)
/sw/src/bison/bison-3.0.3/tests/c++.at:371: sed >&2 -e '/^profiling:.*:Merge 
mismatch for summaries/d' stderr
--- -   2015-01-15 12:17:22.000000000 +0100
+++ 
/sw/src/bison/bison-3.0.3-build-64bit/tests/testsuite.dir/at-groups/426/stderr  
    2015-01-15 12:17:22.000000000 +0100
@@ -1,6 +1,7 @@
Destroy: ""
Destroy: "0"
Destroy: (0)
+Destroy: (0)
Destroy: 1
Destroy: "1"
Destroy: ()
426. c++.at:371: 426. Variants lalr1.cc  (c++.at:371): FAILED (c++.at:371)

For some reason, we have one more call to the destructor than expected.  Which
certainly means that one value was duplicated at some point, unexpectedly.
Maybe your compiler does not perform some common optimizations, such as
RVO and NRVO, possibly precisely because the destructor is nontrivial?

Could you try to see where this destructor call is coming from?
Also, running these test with valgrind, if applicable, might help us knowing
whether this call to the destructor is ok or not (i.e., if there is indeed
more copies than usual, or a double free somewhere).

Try make maintainer-check-valgrind.

Thanks!


Attachment: testsuite.txt.bz2
Description: BZip2 compressed data


reply via email to

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