Bug 1546255
| Summary: | GCC 8 miscompiles GN on x86_64, causes chromium and qt5-qtwebengine FTBFS | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Kevin Kofler <kevin> |
| Component: | gcc | Assignee: | Jakub Jelinek <jakub> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | urgent | Docs Contact: | |
| Priority: | urgent | ||
| Version: | 28 | CC: | aoliva, davejohansen, dmalcolm, fweimer, jakub, jwakely, kevin, law, mpolacek, msebor, nickc, rdieter |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | gcc-8.0.1-0.16.fc28 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2018-02-23 14:45:01 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1545918, 1545936 | ||
|
Description
Kevin Kofler
2018-02-16 18:19:39 UTC
A workaround for now would be to build with -fabi-version=11. I can confirm using -fabi-version=11 seems to help qt5-qtwebengine get past where it was crashing originally This bug appears to have been reported against 'rawhide' during the Fedora 28 development cycle. Changing version to '28'. I'd hope this would be fixed by http://gcc.gnu.org/PR84502 fix. Now, the question is how to determine what all packages besides these are affected. At least in make-check-c++, it seems finalize_type_size is always called on TYPE_MAIN_VARIANT, so the || type != TYPE_MAIN_VARIANT (type) is there perhaps useless or just for other frontends. If a variant type is created after the main variant has been finalized using finalize_type_size, all should be fine, TYPE_EMPTY_P is copied to the new type together with all the other flags. The only problem is if the type variants are created before the type is finalized, and the uses of TYPE_EMPTY_P in calls.c, function.c, tree.c, targhooks.c and config/i386/i386.c don't use the main variant of the type. So, one way to determine that would be to augment the TYPE_EMPTY_P uses in the above 5 files and check if !TYPE_EMPTY_P (something) && TYPE_EMPTY_P (TYPE_MAIN_VARIANT (something)). Another would be hack up a -fcompare-debug like compilation mode where everything would be compiled twice, in both cases without the finalize_type_size fix, once testing TYPE_EMPTY_P (something) and once TYPE_EMPTY_P (TYPE_MAIN_VARIANT (something)) and see if the assembly or final dump like compare debug differ. Can you please try if gcc-8.0.1-0.16.fc28 fixes this issue? Should be fixed in gcc-8.0.1-0.16.fc28. Trying a qt5-qtwebengine Rawhide build without the workaround now: https://koji.fedoraproject.org/koji/taskinfo?taskID=25261803 If it succeeds, I'll also build that for F28. Looks like this is working, though the build is still running. F28 build: https://koji.fedoraproject.org/koji/taskinfo?taskID=25262473 Builds fine on x86_64 on both F28 and Rawhide without the -fabi-version=11 workaround now. So I can confirm that this bug is fixed. |