On Wed, Feb 08, 2017 at 01:11:32PM +0100, Marek Skalický wrote:
Marek Polacek píše v Út 07. 02. 2017 v 22:32 +0100:
> It's been a tradition now that every January we rebuild all the
> Fedora packages
> with the upcoming GCC, to reveal as many bugs as possible before we
> release
> the new version. This year is no different.
>
> There were 18811 packages overall (last year we had 17741 packages).
> 17263 built fine with the new GCC (mostly gcc-7.0.0-0.1.fc26.src.rpm
> but I also
> used a newer version from rawhide). 1350 failed with both GCC 6 and
> GCC 7,
> so I ignored these. This left us with ~198 packages that had to be
> analyzed,
> a number which, fortunately, was smaller than last year, when we'd
> had 577 FTBFS to
> investigate.
MongoDB is not failing in your rebuild. However latest minor upgrade
(v3.4.2) with gcc 7 is failing.
I've figured out, that is optimization issue (with -O0 it is fine, with
-01 it is failing) and it is ONLY ON ppc64le (other architectures are
fine).
The test mass rebuild has been performed on x86_64 only.
I know which file is cause this issue, but I can't figure out
with
which optimization. I get what changes between O0 and O1 in output of
'gcc -O0/1 -Q --help=optimizers' and compiled with -O0 and flags of
individual optimizations (which are added by O1), but failure does not
appear.
What else differs in -O1? How should I debug it?
Many things, and many things aren't even controlled by -f* switches,
at -O0 most of the optimization passes are short-cut.
I'd suggest try -fsanitize=undefined and/or -fsanitize=address to
check if there aren't any obvious bugs in the code, if not, and e.g.
-fno-inline -O1 still reproduces it, try to find which function
is problematic (e.g. through addition of __attribute__((optimize (0)))
to functions within the source and bisecting that way).
If a single function is discovered, then one can often stub functions it
calls and write main that calls that function with the right arguments
to provide self-contained testcase.
Or just file a rhbz with as many details as you can find.
Jakub