Skip to content

GLIBC_2.38 not found

Symptom

The soc-ota-agent service enters a restart loop immediately after boot. journalctl shows:

/usr/bin/soc-ota-agent: /usr/lib/libc.so.6: version 'GLIBC_2.38' not found

systemctl status soc-ota-agent shows activating (auto-restart).

Cause

The agent binary was compiled on a host running Ubuntu 23.10 or later (glibc 2.38) but deployed to a device whose BSP provides a lower glibc ceiling — for example, a Jetson Xavier NX running L4T r35.6.4 tops out at glibc 2.35. Static linking is not a viable workaround because the agent uses CGO (lmdb, OpenSSL), which links against the platform’s glibc NSS at runtime regardless of link flags.

Fix

Rebuild the agent inside the Yocto cross-toolchain for the target machine:

Terminal window
cd /path/to/multiboard_yocto
source sources/poky/oe-init-build-env build/<target-build-dir>
bitbake -c cleansstate soc-ota-agent
bitbake soc-ota-agent

Verify the rebuilt binary does not exceed the device’s glibc ceiling:

Terminal window
BINARY=$(find tmp-glibc/work/ -name "soc-ota-agent" -type f | head -1)
strings "$BINARY" | grep 'GLIBC_2\.' | sort -V | tail -1
# Must not exceed the device BSP maximum (e.g. GLIBC_2.35 for Jetson L4T r35.x)

Deploy the Yocto-built binary via scp and restart the service.