Re: core dump in ld during buildworld

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 19 Feb 2023 00:50:07 UTC
On 19 Feb 2023, at 01:33, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> 
> During biuldworld,
> 
> ==> usr.bin/nm (obj,all,install)
> cc -O2 -pipe -g -fno-common -I/usr/src/contrib/elftoolchain/libelftc -I/usr/src/contrib/elftoolchain/common -std=gnu99 -Wno-format-zero-length -Wsystem-headers -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Wnested-externs -Wold-style-definition -Wno-pointer-sign -Wdate-time -Wmissing-variable-declarations -Wthread-safety -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-error=unused-but-set-variable -Qunused-arguments -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include  -Wl,-zrelro -static   -L/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib -o nm nm.o  -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libdwarf -ldwarf -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelf -lelf -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libz -lz -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelftc -lelftc_pie -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelf -lelf  -legacy
> PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace.
> Stack dump:
> 0.      Program arguments: /usr/bin/ld --eh-frame-hdr -Bstatic -o nm /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbeginT.o -L/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libdwarf -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelf -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libz -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelftc -L/usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libelf -L/usr/lib -zrelro nm.o -ldwarf -lelf -lz -lelftc_pie -lelf -legacy -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /usr/lib/crtend.o /usr/lib/crtn.o
> #0 0x000000000164f1c1 (/usr/bin/ld+0x164f1c1)
> #1 0x000000000164d4a5 (/usr/bin/ld+0x164d4a5)
> #2 0x000000000164f8e0 (/usr/bin/ld+0x164f8e0)
> #3 0x0000000825243a60 (/lib/libthr.so.3+0x19a60)
> #4 0x000000082524301f (/lib/libthr.so.3+0x1901f)
> #5 0x00000008231e48a3 ([vdso]+0x2d3)
> #6 0x0000000000cf4830 (/usr/bin/ld+0xcf4830)
> #7 0x0000000000cf7b89 (/usr/bin/ld+0xcf7b89)
> #8 0x0000000000cf55a3 (/usr/bin/ld+0xcf55a3)
> #9 0x0000000000cf5217 (/usr/bin/ld+0xcf5217)
> #10 0x0000000000dabe23 (/usr/bin/ld+0xdabe23)
> #11 0x0000000000da7754 (/usr/bin/ld+0xda7754)
> #12 0x0000000000cf4ec5 (/usr/bin/ld+0xcf4ec5)
> #13 0x0000000000cc6e83 (/usr/bin/ld+0xcc6e83)
> #14 0x0000000000cbe4bc (/usr/bin/ld+0xcbe4bc)
> #15 0x0000000000cbccda (/usr/bin/ld+0xcbccda)
> cc: error: unable to execute command: Segmentation fault (core dumped)
> cc: error: linker command failed due to signal (use -v to see invocation)
> *** Error code 254
> 
> Stop.
> make[3]: stopped in /usr/src/usr.bin/nm
> *** Error code 1
> 
> % find /usr/obj/ -name \*.core
> /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/usr.bin/nm/ld.lld.core
> %  uname -a
> FreeBSD hotrats 14.0-CURRENT FreeBSD 14.0-CURRENT #0 main-n260094-906c312bbf74: Fri Feb  3 21:28:39 PST 2023     kargl@hotrats:/usr/obj/usr/src/amd64.amd64/sys/HOTRATS amd64
> 
> Is the wrong ld being called?  The failing command shows /usr/bin/ld.
> Should this be  /usr/obj/usr/src/amd64.amd64/tmp/usr/bin/ld?

It looks like this happens during the early stages, most likely
cross-tools? (As it appears to be building usr.bin/nm under obj-tools.)

At that point it is still using the system compiler and linker, and it
seems that the latter is lld. Do you know which version it is?

-Dimitry