NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: bin/59571: new bind crashes on arm64
i wonder if we could work around this by turning off the
RCU_MEMBARRIER version and forcing RCU_MB version, which is
effectively the one we end up using anyway, since membarrier()
is a linux feature only.
i tested this, seems to work fine. since it involves no code
changes to upstream, just this small diff (which includes a
fix for liburcu-signal/Makefile that doesn't matter.)
note this isn't a fix for whatever the underlying problem is,
but i think this is better anyway since it avoids code that
won't even run on netbsd being compiled in at all. (if we
go with this, and close this PR, a separate PR for the other
problem should be created.)
.mrg.
Index: lgpl2/userspace-rcu/lib/liburcu/Makefile
===================================================================
RCS file: /cvsroot/src/external/lgpl2/userspace-rcu/lib/liburcu/Makefile,v
retrieving revision 1.1
diff -p -u -r1.1 Makefile
--- lgpl2/userspace-rcu/lib/liburcu/Makefile 17 Jan 2025 16:07:26 -0000 1.1
+++ lgpl2/userspace-rcu/lib/liburcu/Makefile 5 Aug 2025 23:17:51 -0000
@@ -4,7 +4,7 @@
LIBISPRIVATE=yes
LIB=urcu
-CPPFLAGS+=-DRCU_MEMBARRIER
+CPPFLAGS+=-DRCU_MB
SRCS+= urcu.c urcu-pointer.c compat_arch.c compat_futex.c
Index: lgpl2/userspace-rcu/lib/liburcu-signal/Makefile
===================================================================
RCS file: /cvsroot/src/external/lgpl2/userspace-rcu/lib/liburcu-signal/Makefile,v
retrieving revision 1.1
diff -p -u -r1.1 Makefile
--- lgpl2/userspace-rcu/lib/liburcu-signal/Makefile 17 Jan 2025 16:07:27 -0000 1.1
+++ lgpl2/userspace-rcu/lib/liburcu-signal/Makefile 5 Aug 2025 23:17:51 -0000
@@ -3,7 +3,7 @@
.include <bsd.own.mk>
LIBISPRIVATE=yes
-LIB=urcu-mb
+LIB=urcu-signal
CPPFLAGS+=-DRCU_SIGNAL -DRCU_MEMBARRIER
SRCS+= urcu.c urcu-pointer.c compat_arch.c compat_futex.c
Index: mpl/bind/Makefile.inc
===================================================================
RCS file: /cvsroot/src/external/mpl/bind/Makefile.inc,v
retrieving revision 1.17
diff -p -u -r1.17 Makefile.inc
--- mpl/bind/Makefile.inc 14 Jul 2025 10:25:52 -0000 1.17
+++ mpl/bind/Makefile.inc 5 Aug 2025 23:17:51 -0000
@@ -17,7 +17,7 @@ CWARNFLAGS.clang+= -Wno-unused-value -Wn
LIBUVDIR= ${NETBSDSRCDIR}/external/mit/libuv
LIBUVOBJDIR!= cd ${LIBUVDIR}/lib && ${PRINTOBJDIR}
LIBURCUDIR= ${NETBSDSRCDIR}/external/lgpl2/userspace-rcu
-LIBURCUMEMBOBJDIR!= cd ${LIBURCUDIR}/lib/liburcu-memb && ${PRINTOBJDIR}
+LIBURCUMBOBJDIR!= cd ${LIBURCUDIR}/lib/liburcu-mb && ${PRINTOBJDIR}
LIBURCUCDSOBJDIR!= cd ${LIBURCUDIR}/lib/liburcu-cds && ${PRINTOBJDIR}
LIBURCUCOMMONOBJDIR!= cd ${LIBURCUDIR}/lib/liburcu-common && ${PRINTOBJDIR}
CPPFLAGS+= -I${LIBUVDIR}/dist/include
@@ -57,7 +57,7 @@ DBG=-g3 -gstabs
.if defined(NAMED_DEBUG)
LDADD+= -lisccfg_g -ldns_g -lns_g
LDADD+= -lisccc_g -lisc_g
-LDADD+= -L${LIBURCUMEMBOBJDIR} -lurcu-memb_g
+LDADD+= -L${LIBURCUMBOBJDIR} -lurcu-mb_g
LDADD+= -L${LIBURCUCDSOBJDIR} -lurcu-cds_g
LDADD+= -L${LIBURCUCOMMONOBJDIR} -lurcu-common_g
LDADD+= -L${LIBUVOBJDIR} -luv_g
@@ -66,7 +66,7 @@ LDADD+= -lexecinfo_g -lelf_g -lkvm_g -l
LDADD+= -lisccfg -ldns -lns
DPADD+= ${LIBISCCFG} ${LIBDNS} ${LIBNS}
LDADD+= -lisccc -lisc
-LDADD+= -L${LIBURCUMEMBOBJDIR} -lurcu-memb
+LDADD+= -L${LIBURCUMBOBJDIR} -lurcu-mb
LDADD+= -L${LIBURCUCDSOBJDIR} -lurcu-cds
LDADD+= -L${LIBURCUCOMMONOBJDIR} -lurcu-common
LDADD+= -L${LIBUVOBJDIR} -luv
Index: mpl/bind/bind2netbsd
===================================================================
RCS file: /cvsroot/src/external/mpl/bind/bind2netbsd,v
retrieving revision 1.10
diff -p -u -r1.10 bind2netbsd
--- mpl/bind/bind2netbsd 21 May 2025 14:47:34 -0000 1.10
+++ mpl/bind/bind2netbsd 5 Aug 2025 23:17:51 -0000
@@ -43,7 +43,7 @@
# U=/usr/src/external/lgpl2/userspace-rcu
# OBJ=/obj.amd64-x86_64
-# env LIBURCU_CFLAGS="-I$U/include -I$U/dist/include" LIBURCU_LIBS="-L$U/lib/liburcu-memb$OBJ -lurcu-memb -L$U/lib/liburcu-cds$OBJ -lurcu-cds -L$U/lib/liburcu-common$OBJ -lurcu-common" ./configure --enable-querytrace --enable-fixed-rrset
+# env LIBURCU_CFLAGS="-I$U/include -I$U/dist/include" LIBURCU_LIBS="-L$U/lib/liburcu-memb$OBJ -lurcu-mb -L$U/lib/liburcu-cds$OBJ -lurcu-cds -L$U/lib/liburcu-common$OBJ -lurcu-common" ./configure --enable-querytrace --enable-fixed-rrset --with-liburcu=mb
# $ run make
# - use the binclude4netbsd to create and import the new headers in
Index: mpl/bind/include/config.h
===================================================================
RCS file: /cvsroot/src/external/mpl/bind/include/config.h,v
retrieving revision 1.23
diff -p -u -r1.23 config.h
--- mpl/bind/include/config.h 17 Jul 2025 19:01:47 -0000 1.23
+++ mpl/bind/include/config.h 5 Aug 2025 23:17:52 -0000
@@ -565,10 +565,10 @@
#define RCU_FLAVOR "liburcu"
/* Build with mb Userspace-RCU flavor */
-/* #undef RCU_MB */
+#define RCU_MB 1
/* Build with membarrier Userspace-RCU flavor */
-#define RCU_MEMBARRIER 1
+/* #undef RCU_MEMBARRIER */
/* Build with QSBR Userspace-RCU flavor */
/* #undef RCU_QSBR */
Home |
Main Index |
Thread Index |
Old Index