diff --git a/sys-kernel/hurd/files/hurd-0.9_p20251029-libports-iterate-refcount.patch b/sys-kernel/hurd/files/hurd-0.9_p20251029-libports-iterate-refcount.patch new file mode 100644 index 0000000000000..f1a66bd548134 --- /dev/null +++ b/sys-kernel/hurd/files/hurd-0.9_p20251029-libports-iterate-refcount.patch @@ -0,0 +1,21 @@ +https://salsa.debian.org/hurd-team/hurd/-/blob/f2c31b4596fc22c2de9dd1758abd32bd4c781c97/debian/patches/libports-iterate-refcount.patch +https://logs.guix.gnu.org/hurd/2024-11-20.log#082237 +https://lists.gnu.org/archive/html/bug-hurd/2016-03/msg00034.html +--- a/libports/bucket-iterate.c ++++ b/libports/bucket-iterate.c +@@ -58,7 +58,14 @@ _ports_bucket_class_iterate (struct hurd_ihash *ht, + + if (class == 0 || pi->class == class) + { +- refcounts_ref (&pi->refcounts, NULL); ++ struct references result; ++ refcounts_unsafe_ref (&pi->refcounts, &result); ++ if (result.hard == 1 && result.weak == 0) ++ { ++ /* This one is on its way out, skip it. */ ++ refcounts_deref (&pi->refcounts, NULL); ++ continue; ++ } + p[n] = pi; + n++; + } diff --git a/sys-kernel/hurd/hurd-0.9_p20251029.ebuild b/sys-kernel/hurd/hurd-0.9_p20251029.ebuild index 15554b6da93fd..79679c537a0ee 100644 --- a/sys-kernel/hurd/hurd-0.9_p20251029.ebuild +++ b/sys-kernel/hurd/hurd-0.9_p20251029.ebuild @@ -62,6 +62,7 @@ fi PATCHES=( "${FILESDIR}"/${PN}-0.9_p20251029-glibc-2.43.patch "${FILESDIR}"/${PN}-0.9_p20251029-rump-link.patch + "${FILESDIR}"/${PN}-0.9_p20251029-libports-iterate-refcount.patch ) src_prepare() { diff --git a/sys-kernel/hurd/hurd-9999.ebuild b/sys-kernel/hurd/hurd-9999.ebuild index cd1ca6cb742a3..625039f09ba11 100644 --- a/sys-kernel/hurd/hurd-9999.ebuild +++ b/sys-kernel/hurd/hurd-9999.ebuild @@ -61,6 +61,7 @@ fi PATCHES=( "${FILESDIR}"/${PN}-0.9_p20251029-rump-link.patch + "${FILESDIR}"/${PN}-0.9_p20251029-libports-iterate-refcount.patch ) src_prepare() {