Bug #96698 | Use gold as default on x86_64 only | ||
---|---|---|---|
Submitted: | 29 Aug 2019 13:19 | Modified: | 25 Nov 2019 19:37 |
Reporter: | Sam Avril | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S2 (Serious) |
Version: | 8.0.17 from github | OS: | Linux (Armbian on OrangePiPC) |
Assigned to: | CPU Architecture: | ARM (armv7l) | |
Tags: | build, Memory |
[29 Aug 2019 13:19]
Sam Avril
[31 Oct 2019 18:22]
Michal Schorm
This issue got into the released tarball of 8.0.18 (mysql-boost-8.0.18.tar.gz) The issue is then triggered on Fedora on ARMv7hl. -- I am a Fedora maintainer who takes care of the community-mysql package. Without the successful build for the armv7hl arch, I can't build and release the update to 8.0.18 into the Fedora. Without the fix or workaround it will block any further affected version from entering Fedora. -- The issue looks like this: [100%] Linking CXX executable ../../../runtime_output_directory/pfs_connect_attr-t cd /builddir/build/BUILD/mysql-8.0.18/build/storage/perfschema/unittest && /usr/bin/cmake -E cmake_link_script CMakeFiles/pfs_connect_attr-t.dir/link.txt --verbose=1 /usr/bin/c++ -std=c++14 -fno-omit-frame-pointer -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -march=armv7-a -mfpu=vfpv3-d16 -mtune=generic-armv7-a -mabi=aapcs-linux -mfloat-abi=hard -Wall -Wextra -Wformat-security -Wvla -Wundef -Woverloaded-virtual -Wcast-qual -Wimplicit-fallthrough=2 -Wlogical-op -DDBUG_OFF -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -fuse-ld=gold -Wl,--gc-sections -pie -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld CMakeFiles/pfs_connect_attr-t.dir/pfs_connect_attr-t.cc.o CMakeFiles/pfs_connect_attr-t.dir/__/__/__/sql/sql_builtin.cc.o -o ../../../runtime_output_directory/pfs_connect_attr-t -lpthread ../../../unittest/mytap/libmytap.a ../libperfschema.a ../../../sql/libsql_main.a ../../archive/libarchive.a /usr/lib/libz.so ../../blackhole/libblackhole.a ../../csv/libcsv.a ../../federated/libfederated.a ../../heap/libheap.a ../../heap/libheap_library.a ../../innobase/libinnobase.a ../../../sql/libsql_dd.a ../../../sql/libsql_gis.a /usr/lib/libz.so /usr/lib/liblz4.so ../../myisam/libmyisam.a ../../myisam/libmyisam_library.a ../../myisammrg/libmyisammrg.a ../libperfschema.a /usr/lib/libicuuc.so /usr/lib/libicuio.so /usr/lib/libicudata.so /usr/lib/libicui18n.so ../../../sql/librpl.a ../../../sql/libmaster.a ../../../sql/libslave.a ../../../sql/libbinlog.a ../../../sql/libsql_main.a ../../innobase/libinnobase.a ../../../sql/libsql_dd.a ../../../sql/libsql_gis.a ../../../sql/librpl.a ../../../sql/libmaster.a ../../../sql/libslave.a ../../../sql/libbinlog.a ../../../sql/libsql_main.a ../../innobase/libinnobase.a ../../../sql/libsql_dd.a ../../../sql/libsql_gis.a ../../../sql/librpl.a ../../../sql/libmaster.a ../../../sql/libslave.a ../../../sql/libbinlog.a ../libperfschema.a ../../archive/libarchive.a ../../blackhole/libblackhole.a ../../csv/libcsv.a ../../federated/libfederated.a ../../heap/libheap.a ../../heap/libheap_library.a ../../myisam/libmyisam.a ../../myisam/libmyisam_library.a ../../myisammrg/libmyisammrg.a ../../temptable/libtemptable.a ../../../plugin/fulltext/libngram_parser.a ../../../plugin/x/libmysqlx.a /usr/lib/libevent_core.so /usr/lib/libevent_extra.so /usr/lib/libicuuc.so /usr/lib/libicuio.so /usr/lib/libicudata.so /usr/lib/libicui18n.so /usr/lib/libprotobuf-lite.so ../../../plugin/x/protocol/protobuf/libmysqlxmessages_lite.a ../../../components/mysql_server/component_mysql_server.a ../../../archive_output_directory/libvio.a -lcrypt -laio /usr/lib/liblz4.so ../../../libbinlogevents/lib/libbinlogevents.a ../../../archive_output_directory/libmysys.a /usr/lib/libz.so ../../../archive_output_directory/libstrings.a ../../../archive_output_directory/libmytime.a -lpthread /usr/lib/libzstd.so -lm -lrt /usr/lib/libssl.so /usr/lib/libcrypto.so -ldl /usr/bin/ld.gold: out of memory collect2: error: ld returned 1 exit status -- I have a interesting observation though: the issue is not triggered on the Fedora 29. So there may be chance to trace the issue to a specific package which changed (as all of them did) between F29 & F30. I can try some, if you give me a tip. However the armv7hl builds are considerably slow, so finding it by random (check each buildroot package) is a no-go.
[31 Oct 2019 18:25]
Michal Schorm
Build log on the Fedora Rawhide Armv7hl
Attachment: build.log.tar.gz (application/gzip, text), 334.72 KiB.
[31 Oct 2019 18:25]
Michal Schorm
Buildroot log on the Fedora Rawhide Armv7hl
Attachment: root.log (text/x-log), 99.25 KiB.
[3 Nov 2019 13:38]
Michal Schorm
I disabled liking with GOLD in Fedora on Armv7hl, until fix is found. -DUSE_LD_GOLD=OFF Without GOLD, if build fine.
[5 Nov 2019 11:45]
Terje Røsten
hi! gold seems to be problematic on several archs, would make sense to disable gold completely or use is on x86_64 only. gold as default linker was added for faster build times I think, these days lld (the LLVM linker) would any way be more naturally choice for a performant linker.
[25 Nov 2019 19:37]
Paul DuBois
Posted by developer: Fixed in 8.0.19. The GNU gold loader could cause memory exhaustion on some platforms. Now it is used by default only on Intel 64-bit platforms.