tar fails with:
./tar: memory exhausted./tar: Error is not recoverable: exiting now

Bug found out to be in gnulib's lib/alignalloc.h .
C11 (§7.22.3.1) mandates that size must be an integral multiple of alignment.
Glibc's default allocator historically ignored this constraint, but Scudo 
strictly enforces it,
returning EINVAL for aligned_alloc(4096, 10240).
So tar would work with -b 32 but not with -b 10.

--
--- gnulib/lib/alignalloc.h.bak	2026-09-23 20:11:46.582380908 +0300
+++ gnulib/lib/alignalloc.h	2026-09-23 20:20:19.458332281 +0300
@@ -49,16 +49,16 @@ extern "C" {
 # define ALIGNALLOC_VIA_ALIGNED_ALLOC 0
 #endif
 
-/* Work around AddressSanitizer bug.
+/* Work around AddressSanitizer bug and Scudo strictness.
    https://gcc.gnu.org/PR104262
    https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20220124/1001910.html
-   */
+   Scudo enforces C11's requirement that size be a multiple of alignment.  */
 #ifdef __SANITIZE_ADDRESS__
 # undef ALIGNALLOC_VIA_ALIGNED_ALLOC
 # define ALIGNALLOC_VIA_ALIGNED_ALLOC 0
 #endif
 #ifdef __has_feature
-# if __has_feature (address_sanitizer)
+# if __has_feature (address_sanitizer) || __has_feature (scudo)
 #  undef ALIGNALLOC_VIA_ALIGNED_ALLOC
 #  define ALIGNALLOC_VIA_ALIGNED_ALLOC 0
 # endif

Reply via email to