[From nobody Fri Aug 14 11:07:07 2026
Received: (at submit) by bugs.debian.org; 13 Aug 2026 16:42:16 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-109.7 required=4.0 tests=BAYES_00,DKIMWL_WL_HIGH,
 DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,
 FROMDEVELOPER,FVGT_m_MULTI_ODD,SHIPPING_BODY,SPF_HELO_NONE,SPF_PASS,
 UNPARSEABLE_RELAY,USER_IN_DKIM_WELCOMELIST,XMAILER_REPORTBUG
 autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 131; hammy, 150; neutral, 312; spammy,
 0. spammytokens:
 hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
 0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
 0.000-+--H*RT:311, 0.000-+--H*RT:108
Return-path: &lt;aurel32@debian.org&gt;
Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:108]:60882)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;aurel32@debian.org&gt;) id 1wuYVU-000AP6-0O
 for submit@bugs.debian.org; Thu, 13 Aug 2026 16:42:16 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.stravinsky;
 h=X-Debian-User:Date:Message-ID:Subject:To:From:
 MIME-Version:Content-Type:Reply-To:Cc:Content-Transfer-Encoding:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=QCm0V+7Ktvznkiye1EgyGKnAx9+UC/Nq5oE/btBqDfo=; b=vky/lZliwyJGfGKaWv/JKx7Eao
 yZXa2ANDtA4pkMntgB9//oKkoEIN6cl2d2+tOIvgbXT9XYAJWqYtQBC2gsx1J7u1sIxaiYWzcEJbk
 gatK0yToO68KRxISDgoyMvtO8AlZTS094ZdCCEv+G5Mki+g+mQ2lns6nw+JPMJTBo3pjoJAAwLUnz
 7Hxu07FzqcKMa30H8sS2SJ8Py16OvSiv5juoHP+7fVxkwxpkmkXNvOhmQP9F5X7SvTyS/um2LMSlG
 N9df1gWngmHtIVf8cec9wOZ3ZqFukEOnMnZiI04cmlzwWDxS/PdG7vTn6FvD6sSRw0j6DEr+8L+Dr
 sN9Iwj8g==;
Received: from authenticated-user by stravinsky.debian.org with esmtpsa
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;aurel32@debian.org&gt;) id 1wuYVS-005FPu-1P
 for submit@bugs.debian.org; Thu, 13 Aug 2026 16:42:14 +0000
Received: from authenticated user by hall.aurel32.net with esmtpsa (TLS1.3) tls
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2)
 (envelope-from &lt;aurel32@debian.org&gt;) id 1wuYVQ-00000005L9E-3Asd;
 Thu, 13 Aug 2026 18:42:12 +0200
Content-Type: multipart/mixed; boundary=&quot;===============0212963226111677075==&quot;
MIME-Version: 1.0
From: Aurelien Jarno &lt;aurel32@debian.org&gt;
To: Debian Bug Tracking System &lt;submit@bugs.debian.org&gt;
Subject: libcifti0t64: double free or corruption in autopkgtest
Message-ID: &lt;178663932593.3234890.14211133783608149273.reportbug@ohm.local&gt;
X-Mailer: reportbug 13.2.0+nmu1
Date: Thu, 13 Aug 2026 18:42:05 +0200
X-Debian-User: aurel32
Delivered-To: submit@bugs.debian.org

This is a multi-part MIME message sent by reportbug.


--===============0212963226111677075==
Content-Type: text/plain; charset=&quot;us-ascii&quot;
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Source: ciftilib
Version: 1.6.0-9
Severity: grave
Tags: patch
Justification: renders package unusable

Dear maintainer,

ciftilib autopkgtest fails when run against glibc 2.43 [1]:

|  69s The following tests FAILED:
|  69s 	  1 - info-Conte69.MyelinAndCorrThickness.32k_fs_LR.dscalar.nii (Subprocess aborted)
|  69s 	  2 - rewrite-little-Conte69.MyelinAndCorrThickness.32k_fs_LR.dscalar.nii (Subprocess aborted)
|  69s 	  3 - rewrite-big-Conte69.MyelinAndCorrThickness.32k_fs_LR.dscalar.nii (Subprocess aborted)
|  69s 	  4 - info-Conte69.MyelinAndCorrThickness.32k_fs_LR.dtseries.nii (Subprocess aborted)
|  69s 	  5 - rewrite-little-Conte69.MyelinAndCorrThickness.32k_fs_LR.dtseries.nii (Subprocess aborted)
|  69s 	  6 - rewrite-big-Conte69.MyelinAndCorrThickness.32k_fs_LR.dtseries.nii (Subprocess aborted)
|  69s 	  7 - info-Conte69.MyelinAndCorrThickness.32k_fs_LR.ptseries.nii (Subprocess aborted)
|  69s 	  8 - rewrite-little-Conte69.MyelinAndCorrThickness.32k_fs_LR.ptseries.nii (Subprocess aborted)
|  69s 	  9 - rewrite-big-Conte69.MyelinAndCorrThickness.32k_fs_LR.ptseries.nii (Subprocess aborted)
|  69s 	 10 - info-Conte69.parcellations_VGD11b.32k_fs_LR.dlabel.nii (Subprocess aborted)
|  69s 	 11 - rewrite-little-Conte69.parcellations_VGD11b.32k_fs_LR.dlabel.nii (Subprocess aborted)
|  69s 	 12 - rewrite-big-Conte69.parcellations_VGD11b.32k_fs_LR.dlabel.nii (Subprocess aborted)
|  69s 	 13 - info-ones.dscalar.nii (Subprocess aborted)
|  69s 	 14 - rewrite-little-ones.dscalar.nii (Subprocess aborted)
|  69s 	 15 - rewrite-big-ones.dscalar.nii (Subprocess aborted)
|  69s Errors while running CTest
|  69s Output from these tests are in: /tmp/autopkgtest.mAiw3u/autopkgtest_tmp/build/Testing/Temporary/LastTest.log
|  69s Use &quot;--rerun-failed --output-on-failure&quot; to re-run the failed cases verbosely.
|  69s make: *** [Makefile:71: test] Error 8

Looking at the log file, there is:

| 15/15 Testing: rewrite-big-ones.dscalar.nii
| 15/15 Test: rewrite-big-ones.dscalar.nii
| Command: &quot;/home/aurel32/work/glibc/transition/tmp/ciftilib/AUTOPKGTEST_TMP/build/rewrite&quot; &quot;/home/aurel32/work/glibc/transition/tmp/ciftilib/AUTOPKGTEST_TMP/data/ones.dscalar.nii&quot; &quot;big-ones.dscalar.nii&quot; &quot;BIG&quot;
| Directory: /home/aurel32/work/glibc/transition/tmp/ciftilib/AUTOPKGTEST_TMP/build
| &quot;rewrite-big-ones.dscalar.nii&quot; start time: Aug 13 16:23 UTC
| Output:
| ----------------------------------------------------------
| double free or corruption (!prev)
| &lt;end of output&gt;
| Test time =   0.51 sec
| ----------------------------------------------------------
| Test Failed.
| &quot;rewrite-big-ones.dscalar.nii&quot; end time: Aug 13 16:23 UTC
| &quot;rewrite-big-ones.dscalar.nii&quot; time elapsed: 00:00:00
| ----------------------------------------------------------

And this is the corresponding backtrace:

| #0  __pthread_kill_implementation (threadid=&lt;optimized out&gt;, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
| #1  0x00007ffff79f606f in __pthread_kill_internal (threadid=&lt;optimized out&gt;, signo=6) at ./nptl/pthread_kill.c:89
| #2  0x00007ffff799f582 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
| #3  0x00007ffff7987507 in __GI_abort () at ./stdlib/abort.c:77
| #4  0x00007ffff7988540 in __libc_message_impl (vma_name=vma_name@entry=0x7ffff7b09f89 &quot;glibc: fatal&quot;, fmt=fmt@entry=0x7ffff7b0d5c6 &quot;%s\n&quot;)
|     at ../sysdeps/posix/libc_fatal.c:138
| #5  0x00007ffff79ffe2e in __libc_message_wrapper (vmaname=0x7ffff7b09f89 &quot;glibc: fatal&quot;, fmt=0x7ffff7b0d5c6 &quot;%s\n&quot;) at ../include/stdio.h:203
| #6  malloc_printerr (str=str@entry=0x7ffff7b10080 &quot;double free or corruption (!prev)&quot;) at ./malloc/malloc.c:5341
| #7  0x00007ffff7a0177c in _int_free_merge_chunk (av=0x7ffff7b46ac0 &lt;main_arena&gt;, p=0x55555557d5c0, size=32) at ./malloc/malloc.c:4423
| #8  0x00007ffff7a017e5 in _int_free_chunk (av=&lt;optimized out&gt;, p=&lt;optimized out&gt;, size=&lt;optimized out&gt;, have_lock=&lt;optimized out&gt;) at ./malloc/malloc.c:4368
| #9  0x00007ffff7e8ebb5 in Glib::VariantType::~VariantType() () at /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
| #10 0x00007ffff79a160d in __cxa_finalize (d=0x7ffff7922000) at ./stdlib/cxa_finalize.c:97
| #11 0x00007ffff78da307 in __do_global_dtors_aux () at /usr/lib/x86_64-linux-gnu/libglibmm-2.68.so.1
| #12 0x00007ffff791e510 in __frame_dummy_init_array_entry () at /usr/lib/x86_64-linux-gnu/libglibmm-2.68.so.1
| #13 0x00007ffff7fc8002 in _dl_call_fini (closure_map=closure_map@entry=0x7ffff7b55aa0) at ./elf/dl-call_fini.c:43
| #14 0x00007ffff7fcbe8e in _dl_fini () at ./elf/dl-fini.c:120
| #15 0x00007ffff79a1b50 in __run_exit_handlers (status=0, listp=0x7ffff7b46680 &lt;__exit_funcs&gt;, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
|     at ./stdlib/exit.c:118
| #16 0x00007ffff79a1c2c in __GI_exit (status=&lt;optimized out&gt;) at ./stdlib/exit.c:148
| #17 0x00007ffff7988fc1 in __libc_start_call_main (main=main@entry=0x5555555572f9 &lt;main&gt;, argc=argc@entry=4, argv=argv@entry=0x7fffffffdff8)
|     at ../sysdeps/nptl/libc_start_call_main.h:83
| #18 0x00007ffff79890d7 in __libc_start_main_impl
|     (main=0x5555555572f9 &lt;main&gt;, argc=4, argv=0x7fffffffdff8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fffffffdfe8)
|     at ../csu/libc-start.c:360
| #19 0x0000555555557231 in _start ()

You could notice that the code is linked to both libglibmm-2.4 and
libglibmm-2.68. This causes some issues as the exit handlers are
executed for both versions, doing the same work, and at the end causing
a double free.

The glibc 2.43 changed a bit the way the memory is being allocated and
reused, triggering the issue. However it can also be reproduce with glibc
2.42, for instance by executing the test binary without any argument.

The double linking is due to an incomplete conversion to libxml++ 4.0
introduced in ciftilib 1.6.0-8. The .pc file is still requiring binaries
to be linked with libxml++ 2.6, and it is used by the autopkgtest. The
attached patch fixes the issue.

Regards
Aurelien

[1] https://ci.debian.net/data/autopkgtest/testing/amd64/c/ciftilib/74304878/log.gz

--===============0212963226111677075==
Content-Type: text/plain; charset=&quot;us-ascii&quot;
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=&quot;ciftilib.fix-double-libxml-linking.patch&quot;

--- ciftilib-1.6.0/debian/patches/xmlplusplus4.patch
+++ ciftilib-1.6.0/debian/patches/xmlplusplus4.patch
@@ -4,7 +4,7 @@
 
 Bug-Debian: http://bugs.debian.org/1121313
 ---
- CMakeLists.txt                    |  2 +-
+ CMakeLists.txt                    |  6 +++---
  cmake/Modules/Findglibmm.cmake    |  4 ++--
  cmake/Modules/Findlibxml++.cmake  |  4 ++--
  cmake/Modules/Findsigc++.cmake    |  4 ++--
@@ -17,7 +17,7 @@
  src/Cifti/LabelTable.cxx          |  4 ++--
  src/Cifti/MetaData.cxx            |  8 ++++----
  src/Common/XmlAdapter.cxx         | 18 +++++++++---------
- 13 files changed, 71 insertions(+), 71 deletions(-)
+ 13 files changed, 73 insertions(+), 73 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
 index aced570..390f2ec 100644
@@ -32,6 +32,21 @@
      SET(CMAKE_CXX_STANDARD_REQUIRED TRUE)
  ENDIF (${CMAKE_VERSION} VERSION_LESS &quot;3.1&quot;)
  
+@@ -65,12 +65,12 @@ IF (NOT QT_FOUND)
+ 
+ #alternative to QT xml, string
+ IF (NOT QT_FOUND)
+-    FIND_PACKAGE(libxml++ 2.17.0 REQUIRED)
++    FIND_PACKAGE(libxml++ 4.0 REQUIRED)
+     INCLUDE_DIRECTORIES(${libxml++_INCLUDE_DIRS})
+     SET(LIBS ${LIBS} ${libxml++_LIBRARIES})
+     ADD_DEFINITIONS(-DCIFTILIB_USE_XMLPP)
+     #for pkg-config file
+-    SET(CIFTILIB_PKGCONFIG_REQUIRES_LINE &quot;Requires: libxml++-2.6 &gt;= 2.17.0&quot;)
++    SET(CIFTILIB_PKGCONFIG_REQUIRES_LINE &quot;Requires: libxml++-4.0&quot;)
+     SET(CIFTILIB_PKGCONFIG_DEFINE &quot;-DCIFTILIB_USE_XMLPP&quot;)
+ ENDIF (NOT QT_FOUND)
+ 
 diff --git a/cmake/Modules/Findglibmm.cmake b/cmake/Modules/Findglibmm.cmake
 index c9b9bef..d190398 100644
 --- a/cmake/Modules/Findglibmm.cmake

--===============0212963226111677075==--
]