Your message dated Wed, 17 Sep 2025 22:18:47 +0000
with message-id <[email protected]>
and subject line Bug#1115531: fixed in c-blosc2 2.17.1+ds-2
has caused the Debian Bug report #1115531,
regarding c-blosc2: FTBFS with glibc 2.42: E: Build killed with signal TERM
after 60 minutes of inactivity
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1115531: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1115531
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: c-blosc2
Version: 2.17.1+ds-1
Severity: normal
Tags: ftbfs forky sid upstream patch
Justification: fails to build from source
User: [email protected]
Usertags: glibc-2.42
Dear maintainer,
During a rebuild of all packages in unstable with glibc 2.42 from
experimental, your package failed to build. Below you will find how the
build ends. If required, the full build log is available here:
https://people.debian.org/~aurel32/glibc-2.42/
After investigation it appears that the issue is due to pthread_create()
now setting errno to EINVAL when running on kernel < 6.13, even if it
succeed. This is perfectly allowed as explained in errno(3):
https://man7.org/linux/man-pages/man3/errno.3.html
The problem is that c-blosc2 is checking errno to check a possible error
of the strtol() function. This only works if errno is set to 0 before
the call, as explained in the cavears section of strtol(3):
https://man7.org/linux/man-pages/man3/strtol.3.html
You will find attached a simple patch to fix the problem, setting errno
to 0 before the call to strtol. An alternative is to pass endptr to the
strtol call and check for its value. The other case that can return
EINVAL, that is a not supported base, can't happen as the base is fixed.
In short it means replacing
| nthreads = strtol(envvar, NULL, 10);
| if ((errno != EINVAL)) {
by
| nthreads = strtol(envvar, &endptr, 10);
| if ((endptr != envvar)) {
I leave you choose what is the best option and report that to upstream.
About the archive rebuild: The build was made on virtual machines from
AWS, using sbuild, a reduced chroot with only build-essential packages
and glibc 2.42 from experimental.
Regards
Aurelien
--------------------------------------------------------------------------------
[...]
725: Tests run: 2
725: .. ALL TESTS PASSED
725: Tests run: 2
725: .. ALL TESTS PASSED
725: Tests run: 2
725/1369 Test #725: test_nolock
............................................... Passed 0.08 sec
test 726
Start 726: test_nthreads
726: Test command: /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/test_nthreads
726: Working Directory: /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests
726: Test timeout computed to be: 10000000
E: Build killed with signal TERM after 60 minutes of inactivity
--------------------------------------------------------------------------------
diff --git a/blosc/blosc2.c b/blosc/blosc2.c
index 8ff941ae..fed68f56 100644
--- a/blosc/blosc2.c
+++ b/blosc/blosc2.c
@@ -2725,6 +2725,7 @@ int blosc2_compress(int clevel, int doshuffle, int32_t
typesize,
envvar = getenv("BLOSC_CLEVEL");
if (envvar != NULL) {
long value;
+ errno = 0; /* To distinguish success/failure after call */
value = strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (value >= 0)) {
clevel = (int)value;
@@ -2768,6 +2769,7 @@ int blosc2_compress(int clevel, int doshuffle, int32_t
typesize,
envvar = getenv("BLOSC_TYPESIZE");
if (envvar != NULL) {
long value;
+ errno = 0; /* To distinguish success/failure after call */
value = strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (value > 0)) {
typesize = (int32_t)value;
@@ -2790,6 +2792,7 @@ int blosc2_compress(int clevel, int doshuffle, int32_t
typesize,
envvar = getenv("BLOSC_BLOCKSIZE");
if (envvar != NULL) {
long blocksize;
+ errno = 0; /* To distinguish success/failure after call */
blocksize = strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (blocksize > 0)) {
blosc1_set_blocksize((size_t) blocksize);
@@ -2803,6 +2806,7 @@ int blosc2_compress(int clevel, int doshuffle, int32_t
typesize,
envvar = getenv("BLOSC_NTHREADS");
if (envvar != NULL) {
long nthreads;
+ errno = 0; /* To distinguish success/failure after call */
nthreads = strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (nthreads > 0)) {
result = blosc2_set_nthreads((int16_t) nthreads);
@@ -2986,6 +2990,7 @@ int blosc2_decompress(const void* src, int32_t srcsize,
void* dest, int32_t dest
/* Check for a BLOSC_NTHREADS environment variable */
envvar = getenv("BLOSC_NTHREADS");
if (envvar != NULL) {
+ errno = 0; /* To distinguish success/failure after call */
nthreads = strtol(envvar, NULL, 10);
if ((errno != EINVAL)) {
if ((nthreads <= 0) || (nthreads > INT16_MAX)) {
@@ -4031,6 +4036,7 @@ blosc2_context* blosc2_create_cctx(blosc2_cparams
cparams) {
envvar = getenv("BLOSC_TYPESIZE");
if (envvar != NULL) {
int32_t value;
+ errno = 0; /* To distinguish success/failure after call */
value = (int32_t) strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (value > 0)) {
context->typesize = value;
@@ -4046,6 +4052,7 @@ blosc2_context* blosc2_create_cctx(blosc2_cparams
cparams) {
envvar = getenv("BLOSC_CLEVEL");
if (envvar != NULL) {
int value;
+ errno = 0; /* To distinguish success/failure after call */
value = (int)strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (value >= 0)) {
context->clevel = value;
@@ -4073,6 +4080,7 @@ blosc2_context* blosc2_create_cctx(blosc2_cparams
cparams) {
envvar = getenv("BLOSC_BLOCKSIZE");
if (envvar != NULL) {
int32_t blocksize;
+ errno = 0; /* To distinguish success/failure after call */
blocksize = (int32_t) strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (blocksize > 0)) {
context->blocksize = blocksize;
@@ -4086,6 +4094,7 @@ blosc2_context* blosc2_create_cctx(blosc2_cparams
cparams) {
/* Check for a BLOSC_NTHREADS environment variable */
envvar = getenv("BLOSC_NTHREADS");
if (envvar != NULL) {
+ errno = 0; /* To distinguish success/failure after call */
int16_t nthreads = (int16_t) strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (nthreads > 0)) {
context->nthreads = nthreads;
@@ -4174,6 +4183,7 @@ blosc2_context* blosc2_create_dctx(blosc2_dparams
dparams) {
context->nthreads = dparams.nthreads;
char* envvar = getenv("BLOSC_NTHREADS");
if (envvar != NULL) {
+ errno = 0; /* To distinguish success/failure after call */
long nthreads = strtol(envvar, NULL, 10);
if ((errno != EINVAL) && (nthreads > 0)) {
context->nthreads = (int16_t) nthreads;
--- End Message ---
--- Begin Message ---
Source: c-blosc2
Source-Version: 2.17.1+ds-2
Done: Antonio Valentino <[email protected]>
We believe that the bug you reported is fixed in the latest version of
c-blosc2, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Antonio Valentino <[email protected]> (supplier of updated c-blosc2
package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Wed, 17 Sep 2025 21:34:48 +0000
Source: c-blosc2
Architecture: source
Version: 2.17.1+ds-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Science Maintainers
<[email protected]>
Changed-By: Antonio Valentino <[email protected]>
Closes: 1115531
Changes:
c-blosc2 (2.17.1+ds-2) unstable; urgency=medium
.
* debian/patches:
- New 0002-glibc242-compat.patch (Closes: 1115531).
Checksums-Sha1:
33454b7905f75f0638204ab9bd5d0ba045a95969 3207 c-blosc2_2.17.1+ds-2.dsc
b0df5df9baf0763b15db864209f8997b9273ee56 7364
c-blosc2_2.17.1+ds-2.debian.tar.xz
c9695fa88b53f19b71ba167827d4a239bcf65ff1 11568
c-blosc2_2.17.1+ds-2_amd64.buildinfo
Checksums-Sha256:
a2eb5d028aefb7f7f016ce64d5b290c8eda929bed872eac607681f400f6f54ac 3207
c-blosc2_2.17.1+ds-2.dsc
161e76089f865ca605171714c1edf468d7a74cebde9803d451c574d265f6171e 7364
c-blosc2_2.17.1+ds-2.debian.tar.xz
202b8b093fe3540b820b436b586090b35c2faef533d8fe05c4453c3aacd25096 11568
c-blosc2_2.17.1+ds-2_amd64.buildinfo
Files:
b45dada881c2d2261156bb61874d0118 3207 libs optional c-blosc2_2.17.1+ds-2.dsc
92a97d9639ea63bae23428835a65b6fe 7364 libs optional
c-blosc2_2.17.1+ds-2.debian.tar.xz
98c9c09fa1ccc95496b7cd770f22b7f8 11568 libs optional
c-blosc2_2.17.1+ds-2_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQJRBAEBCgA7FiEEO3DyCaX/1okDxHLF6/SKslePmBIFAmjLKmwdHGFudG9uaW8u
dmFsZW50aW5vQHRpc2NhbGkuaXQACgkQ6/SKslePmBJiORAAgi/5O/A8DTcPBzZn
5xjnxxzTp/gkauMf8TYvfgCq1pytm7miOj8SHfJB33NWPNeAJz9YV3bNjeYwXCRZ
BXTD/fHE/Mq5Mh3AFUgAq1zMwFGCT/EalYdHzXUswp7/4kXJYF4u3ZeWK2sO7PBn
DqHks+lryjnQKYgPhaeehHg44bFEsh7vKRYrgg5vspLG3eSEmsEyTTRVKGZsLS+6
O8B5vv8CdOITT8nrl15FyHZCH4ha5vem94ZOIGNGRHD6K4X5g4Z40BbLxHhESbIc
uGj71xRARczrgL9E7ULcnVH4QoyAJyWj2diU0kRGZT5NbV3Pj+Hpc7iic9kY4uoV
OXP+FsEtGiI3scKooaQeVLSqoEWhAiQwagCTK11B5+XVOpfwWFGe1Rv95UDITApU
jtQdrT8t9PNiS7euPNWwLX0E/mvkQO6KFgnwQITbil/fSzE+2ozmnf086ZzTSowT
1rG37eU7X/pAQJLVKw7HhaKaqJy2kckflvI/bVT54aVQppYcO0b7VM2ftC+EPn1o
nnMPupu9OGypPw1hR/tnRsXexKm45cAx9qwHnRB13iJqXdbGj31qMJv5qz+MRKPt
UyWg42QKS6L16g7rcgNL8nNT+1k68fDjn3EiUDWADJoDBTl+Wvqri6cKDTM3mYjl
bnF2Cz6iJ9Sd3Ms2EEyY/Cdn6xw=
=a0U0
-----END PGP SIGNATURE-----
pgpmztSi3q7wW.pgp
Description: PGP signature
--- End Message ---
--
debian-science-maintainers mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-science-maintainers