Re: core dump in ld during buildworld

From: Steve Kargl <sgk_at_troutmask.apl.washington.edu>
Date: Sun, 19 Feb 2023 00:57:45 UTC
On Sun, Feb 19, 2023 at 01:50:07AM +0100, Dimitry Andric wrote:
> 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?
> 

Good question.  Unfortunate ident(1) is useless in a git world.

% ll /usr/bin/ld.lld
-r-xr-xr-x  1 root  wheel  - 41754432 Jan 15 12:03 /usr/bin/ld.lld

This was built from source from Jan 15 2023. 

% /usr/bin/ld.lld --version
LLD 14.0.5 (FreeBSD llvmorg-14.0.5-0-gc12386ae247c-1400004) (compatible with GNU linkers)
 

-- 
Steve