Bug 278141

Summary: stable/13: Incremental build sometimes gives "ld: error: relocation R_X86_64_32S cannot be used against local symbol; recompile with -fPIC" for ftpd(8) and sshd(8)
Product: Base System Reporter: Trond Endrestøl <Trond.Endrestol>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Only Me    
Priority: ---    
Version: 13.2-STABLE   
Hardware: Any   
OS: Any   

Description Trond Endrestøl 2024-04-03 12:17:54 UTC
This might be caused by a race condition between libblacklist(3) and its in-tree consumers.

--- ftpd.full ---
ld: error: relocation R_X86_64_32S cannot be used against local symbol; recompile with -fPIC
>>> defined in /usr/obj/usr/src/amd64.amd64/lib/libblacklist/libblacklist.a(blacklist.o)
>>> referenced by blacklist.c:67 (/usr/src/contrib/blacklist/lib/blacklist.c:67)
>>>               blacklist.o:(blacklist_sa) in archive /usr/obj/usr/src/amd64.amd64/lib/libblacklist/libblacklist.a

Here are some technical details about our builder. It runs stable/13 amd64 built on 2024-02-26T00:30Z and it builds stable/13 amd64 using the aforementioned environment. It has two Intel(R) Xeon(R) Gold 6152 CPU @ 2.10GHz (2095.08-MHz K8-class CPU). In other words, 2 package(s) x 22 core(s) x 2 hardware threads. The memory is at 1.5 TiB. (This server was donated to us.) Ccache 3.7.12_6 is in use with the cache's limit set to "128Gi".

Previously, we ran "make buildworld buildkernel" at -j 176, and now we're back at "sysctl -n hw.ncpu", i.e. 88. This might still be too many jobs when libblacklist(3) must be rebuilt. Maybe the cap should be at 64 jobs or lower.

Sometimes the build of sshd(8) could be affected. This was true at times when we ran "make buildworld buildkernel" at -j 176.

The last time this happened was on 2024-03-28T00:30Z. make(1) was running at -j 88. These changes were picked up that night:

   285f941478d8..b5e7969b239f  stable/13  -> freebsd/stable/13

 usr.bin/truss/syscalls.c |  2 ++
 usr.sbin/daemon/daemon.c | 14 +++++++++-----

The previous run on the previous day (2024-03-27T00:30Z) was successful, and picked up these changes:

   b16cb28aca00..285f941478d8  stable/13  -> freebsd/stable/13

 lib/libc/xdr/xdr_rec.c      | 4 ++--
 share/man/man4/cxgbe.4      | 2 +-
 share/man/man9/intr_event.9 | 2 +-

A workaround might be to run "make buildworld buildkernel" one more time if the previous attempt failed for whatever reason. I'll alter our build script shortly.

/etc/src.conf contains these lines:

WITH_CLANG_EXTRAS=yes
WITH_CLANG_FULL=yes
WITHOUT_CLEAN=yes
WITH_CTF=yes
WITH_DEBUG_FILES=yes
WITH_LIBCPLUSPLUS=yes
WITH_LLDB=yes
WITHOUT_REPRODUCIBLE_BUILD=yes

/etc/src-env.conf contains this line:

WITH_META_MODE=yes

/etc/make.conf contains these lines:

WITH_CCACHE_BUILD=yes
CCACHE_DIR?=/var/cache/ccache

# DTrace for both base and ports. See https://wiki.freebsd.org/DTrace/KernelSupport.
STRIP=
CFLAGS+=-fno-omit-frame-pointer
WITH_CTF=1