Re: [main has a fix for] armv7-on-aarch64 stuck at urdlck: I got a replication of the "ampere2" bulk build hangup problem on a Windows DevKit 2023

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 26 Jul 2024 14:46:57 UTC
On Jul 25, 2024, at 09:48, Mark Millard <marklmi@yahoo.com> wrote:

> Michal Meloun <mmel_at_FreeBSD.org> has committed a fix in main:
> 
> See:
> https://lists.freebsd.org/archives/dev-commits-src-main/2024-July/025399.html
> 
> that starts with:
> 
> From: Michal Meloun <mmel_at_FreeBSD.org>
> Date: Thu, 25 Jul 2024 16:25:09 UTC 
> The branch main has been updated by mmel:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=5670b8cc3672d5a6bc2c41eb48d7d01343c43ad0
> 
> commit 5670b8cc3672d5a6bc2c41eb48d7d01343c43ad0
> Author: Michal Meloun <mmel@FreeBSD.org>
> AuthorDate: 2024-07-24 15:11:27 +0000
> Commit: Michal Meloun <mmel@FreeBSD.org>
> CommitDate: 2024-07-25 16:24:22 +0000
> 
> libthr: Preresolve selected EABI symbols on arm.
> 
> Add the ability to pre-resolve architecture-specific EABI symbols and
> use it on arm for selected EABI functions. These functions can be called
> with rtld bind lock write-locked, so they should be resolved in forward.
> 
> Reported by: Mark Millard <marklmi@yahoo.com>, John F Carr <jfc@mit.edu>
> Reviewed by: kib, imp
> MFC after: 1 week
> Differential Revision: https://reviews.freebsd.org/D46104
> ---
> lib/libthr/arch/aarch64/include/pthread_md.h | 5 +++
> lib/libthr/arch/amd64/include/pthread_md.h | 5 +++
> lib/libthr/arch/arm/Makefile.inc | 3 ++
> lib/libthr/arch/arm/thr_rtld_arm.c | 67 ++++++++++++++++++++++++++++
> lib/libthr/arch/i386/include/pthread_md.h | 5 +++
> lib/libthr/arch/powerpc/include/pthread_md.h | 5 +++
> lib/libthr/arch/riscv/include/pthread_md.h | 5 +++
> lib/libthr/thread/thr_private.h | 1 +
> lib/libthr/thread/thr_rtld.c | 3 ++
> 9 files changed, 99 insertions(+)
> 
> . . .

https://pkg.freebsd.org/FreeBSD:15:armv7/base_latest/ has 15.snap20240726110821
and updating to it leads to avoiding the hang-up in my dlopen_test.c testing.
It is based on:

126	static inline size_t
127	round_up(size_t size)
128	{
129		if (size % _thr_page_size != 0)
130			size = ((size / _thr_page_size) + 1) *
131			    _thr_page_size;
132		return size;
133	}

that uses the _aeabi_* routine(s) in standard armv7 builds.

But that no longer causes the recursive locking deadlock
problem.

So, it looks like updating the kernel and world on ampere2 and
enabling builds of main-armv7-default should no longer have
main-armv7-default hang-up during graphviz installation (or
analogous contexts). Hopefully, that means that
main-armv7-default builds will then complete and be distributed.

===
Mark Millard
marklmi at yahoo.com