Bug 791365 - clang segfaults on 64-bit build, works on 32-bit
clang segfaults on 64-bit build, works on 32-bit
Product: Fedora
Classification: Fedora
Component: llvm (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Michel Alexandre Salim
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2012-02-16 15:35 EST by Matthew Garrett
Modified: 2013-01-10 02:53 EST (History)
7 users (show)

See Also:
Fixed In Version: llvm-3.0-10.fc17
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2012-04-11 23:21:45 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Matthew Garrett 2012-02-16 15:35:39 EST
Trying to build an updated hfsplus-tools - the 64-bit build results in http://koji.fedoraproject.org/koji/getfile?taskID=3797349&name=build.log which looks like it's probably not my fault. The 32-bit build seems fine. src.rpm is at http://cavan.codon.org.uk/~mjg59/tmp/hfsplus-tools-540.1.linux3-1.fc17.src.rpm .
Comment 1 Matthew Garrett 2012-02-28 12:04:20 EST
Suspect this is http://llvm.org/bugs/show_bug.cgi?id=11926
Comment 2 Kalev Lember 2012-03-26 08:04:38 EDT
I poked a bit at llvm/clang and rebuilding it with -O0 instead of -O2 fixed it for me. Certainly sounds very similar to the llvm bug linked in comment #1.

Going to see if I can nail it down to a single optimization flag, instead of just turning everything off.
Comment 3 Kalev Lember 2012-03-26 12:52:28 EDT
I managed to track it down to -ftree-pre that is enabled with -O2. When clang is built with gcc 4.7 using explicit "-O2 -fno-tree-pre", the build works fine on x86_64. Without it, clang segfaults building pretty much anything.

I suspect this might be a gcc 4.7 optimization bug; apparently clang in Fedora isn't fully bootstrapped and is built using gcc. Adding Jakub Jelinek to CC for opinions.
Comment 4 Jakub Jelinek 2012-03-26 13:06:32 EDT
If -O2 -fno-tree-pre works and -O2 doesn't, first narrow it down using a binary
search between -O2 -fno-tree-pre and -O2 compiled objects to at least a single compilation unit, then you could use __attribute__((optimize (1))) (resp.
__attribute__((optimize (2))) ) and/or -fno-inline to narrow it even
further, read the problematic code, see if there aren't any e.g. aliasing
warnings (-O2 enables -fstrict-aliasing), if you don't spot a bug in the
gforth code after this and still suspect the compiler, turn that into
self-contained minimal testcase (for the problematic routine add main
that calls it with the right arguments, make the problematic
routine __attribute__((noinline, noclone)) and stub out anything it calls,
then file a gcc bugreport?
Comment 5 Kalev Lember 2012-03-26 13:25:26 EDT
Thanks Jakub for the pointers. This will make it much easier to track down.

Regarding aliasing warnings, apparently clang explicitly passes -fno-strict-aliasing to the compiler. However, Fedora RPM %{optflags} are inserted after -fno-strict-aliasing, so I guess the -O2 from %{optflags} negates the explicit -fno-strict-aliasing.

In the mean time, I've built llvm-3.0-10 with -fno-tree-pre that should work around the crash for now.

P.S. Some more info about the same clang segfault is at https://bugzilla.redhat.com/show_bug.cgi?id=800478
Comment 6 Jakub Jelinek 2012-03-26 13:29:29 EDT
No, -fno-strict-aliasing -O2 doesn't enable strict aliasing, -O2 turns it on only when -f{,no-}strict-aliasing isn't explicit, otherwise only
-fno-strict-aliasing -O2 -fstrict-aliasing
would turn it back on.
Comment 7 Fedora Update System 2012-03-26 13:54:46 EDT
llvm-3.0-10.fc17 has been submitted as an update for Fedora 17.
Comment 8 Fedora Update System 2012-03-28 02:00:21 EDT
Package llvm-3.0-10.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing llvm-3.0-10.fc17'
as soon as you are able to.
Please go to the following url:
then log in and leave karma (feedback).
Comment 9 Fedora Update System 2012-04-11 23:21:45 EDT
llvm-3.0-10.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.

Note You need to log in before you can comment on or make changes to this bug.