Personal aarch64 FreeBSD OS build gets SIGSEGV during: ./pmu-events/jevents arm64 /usr/main-src/lib/libpmc/pmu-events/arch libpmc_event
Date: Sun, 20 Sep 2026 18:13:49 UTC
[I have CC'd a could of authors with recent libpmc commits. I did not
list any recent libc authors.]
From a build typescript:
Building
/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/libpmc_events.c
Segmentation fault (core dumped)
*** [libpmc_events.c] Error code 139
make[5]: stopped making "all" in /usr/main-src/lib/libpmc
.ERROR_TARGET='libpmc_events.c'
.ERROR_META_FILE='/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/libpmc_events.c.meta'
.MAKE.LEVEL='5'
MAKEFILE=''
.MAKE.MODE='meta missing-filemon=yes missing-meta=yes silent=yes verbose'
_ERROR_CMD='./pmu-events/jevents "arm64"
/usr/main-src/lib/libpmc/pmu-events/arch libpmc_events.c.tmp; if [ ! -e
libpmc_events.c ] || ! cmp -s libpmc_events.c libpmc_events.c.tmp; then
mv -f libpmc_events.c.tmp libpmc_events.c; fi;'
. . .
It was building from source based on:
# ~/fbsd-based-on-what-commit.sh -C /usr/main-src/
you have mail
aef4c3eb31d9 (HEAD -> main, freebsd/main, freebsd/HEAD) mana: Initialize
ports with the common RSS key
Author: Kevin Bowling <kbowling@FreeBSD.org>
Commit: Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-09-18 23:01:09 +0000
branch: main
merge-base: aef4c3eb31d9c29c6aeb08023b1c9d2457d817e3
merge-base: CommitDate: 2026-09-18 23:01:09 +0000
n289448 (--first-parent --count for merge-base)
# uname -apKU
FreeBSD aarch64-main-pbase 16.0-CURRENT FreeBSD 16.0-CURRENT #12
main-n289448-aef4c3eb31d9-dirty: Sat Sep 19 12:58:23 PDT 2026
root@aarch64-main-pbase:/usr/obj/BUILDs/main-CA76-nodbg-clang/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG-CA76
arm64 aarch64 1600026 1600026
The prior builds date back to: main-n287870-21bc31ce2e4a-dirty (built on
2026-Jul-31).
I do nothing to libpmc or libc sources.
The failing build reported was after a rm -fr of:
/usr/obj/BUILDs/main-CA76-dbg-clang/usr
gdb reports the backtrace (and more) as shown below:
gdb
/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/pmu-events/jevents
/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/jevents.core
GNU gdb (GDB) 15.1 [GDB v15.1 for FreeBSD]
. . .
Reading symbols from
/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/pmu-events/jevents...
Reading symbols from
/usr/obj/BUILDs/main-CA76-dbg-clang/usr/main-src/arm64.aarch64/lib/libpmc/pmu-events/jevents.debug...
[New LWP 100153]
Core was generated by `./pmu-events/jevents arm64
/usr/main-src/lib/libpmc/pmu-events/arch libpmc_event'.
Program terminated with signal SIGSEGV, Segmentation fault.
Address not mapped to object.
#0 strcmp () at /usr/main-src/lib/libc/aarch64/string/strcmp.S:77
77 ldr q0, [x0] // load true heads
(gdb) bt
#0 strcmp () at /usr/main-src/lib/libc/aarch64/string/strcmp.S:77
#1 0x00006bd929182ac4 in med3 (a=0x8f0f4f821500
"\200\003\202O\017\217", b=0x8f0f4f821528 "@\f\202O\017\217",
c=0x8f0f4f821548 "@\023\202O\017\217", cmp=0x6bd8a6fd6640 <fts_compare>,
thunk=0x0)
at /usr/main-src/lib/libc/stdlib/qsort.c:87
#2 local_qsort (a=<optimized out>, n=n@entry=10, es=es@entry=8,
cmp=0x6bd8a6fd6640 <fts_compare>, thunk=0x0) at
/usr/main-src/lib/libc/stdlib/qsort.c:133
#3 0x00006bd9291826c4 in qsort (a=0x3, n=3, n@entry=10, es=es@entry=8,
cmp=0x10) at /usr/main-src/lib/libc/stdlib/qsort.c:246
#4 0x00006bd9290b7144 in fts_sort (sp=0x8f0f4f811000, head=<optimized
out>, nitems=10) at /usr/main-src/lib/libc/gen/fts.c:1221
#5 0x00006bd9290b6cf8 in fts_build (sp=sp@entry=0x8f0f4f811000,
type=<optimized out>, type@entry=3) at /usr/main-src/lib/libc/gen/fts.c:1093
#6 0x00006bd9290b5fc8 in fts_read (sp=0x8f0f4f811000) at
/usr/main-src/lib/libc/gen/fts.c:534
#7 0x00006bd8a6fd3118 in nftw_ordered (path=path@entry=0x6bd927190120
"/usr/main-src/lib/libpmc/pmu-events/arch/arm64", fn=0x6bd8a6fd3230
<preprocess_arch_std_files>, nfds=nfds@entry=512,
ftwflags=0) at /usr/main-src/lib/libpmc/pmu-events/jevents.c:1538
#8 0x00006bd8a6fd2d60 in main (argc=<optimized out>, argv=<optimized
out>) at /usr/main-src/lib/libpmc/pmu-events/jevents.c:1427
(gdb) info reg
x0 0x3 3
x1 0x3 3
x2 0x8 8
x3 0x10 16
x4 0x10 16
x5 0x8f0f4f81b03b 157295921180731
x6 0x2e656c696670616d 3343197498338468205
x7 0x7673632e656c69 33340917069212777
x8 0x0 0
x9 0x3 3
x10 0x0 0
x11 0x3 3
x12 0x77a28b0 125446320
x13 0xffffffffffffffff -1
x14 0x1 1
x15 0x0 0
x16 0x6bd9291707a0 118580441450400
x17 0x6bd92718feb0 118580408024752
x18 0x1000 4096
x19 0x6bd8a6fd6640 118578258732608
x20 0x8 8
x21 0x8f0f4f821500 157295921206528
x22 0x8 8
x23 0x8f0f4f821528 157295921206568
x24 0x6bd8a6ff7000 118578258866176
x25 0x6bd8a6ff7000 118578258866176
x26 0x8f0f4f821548 157295921206600
x27 0xfffffffffffffff8 -8
x28 0x8f0f4f821500 157295921206528
x29 0x6bd92718ff30 118580408024880
x30 0x6bd929182ac4 118580441524932
sp 0x6bd92718fec0 0x6bd92718fec0
pc 0x6bd929170840 0x6bd929170840 <strcmp+160>
cpsr 0x80000200 [ EL=0 D BTYPE=0 N ]
fpsr 0x0 [ ]
fpcr 0x0 [ Len=0 Stride=0 RMode=0 ]
tpidr 0x8f0f4f41f010 0x8f0f4f41f010
(gdb)
So:
77 ldr q0, [x0] // load true heads
and:
x0 0x3 3
might suggest a small offset from a NULL pointer ended up involved.
--
===
Mark Millard
marklmi at yahoo.com