[Debian-med-packaging] Bug#1148945: camitk: autopkgtest regression with Qt 6.11.2
Manik Bhattacharjee
manik.bhattacharjee at univ-grenoble-alpes.fr
Sun Oct 4 17:47:53 BST 2026
The QtPrivate code in question is called by Qt itself.
The line that segfaults in our generated code is textbook use of
QStringList.
It looks like:
QStringList ext;
ext << "test"';
The operator << is the one segfaulting.
This segfault only happens with:
- our camitk package compiled with Qt6.10,
- the extension (including this code) library compiled with Qt 6.11
during autopkgtest
- this code from the extension is called by camitk after loading the
extension
I don't know enough about binary compatibility to understand why this fails.
Maybe I should just create an empty -6 patch version to trigger
package rebuild with 6.11?
Le 02/10/2026 à 23:39, Adrian Bunk a écrit :
> On Mon, Sep 28, 2026 at 06:59:17PM +0200, Manik Bhattacharjee wrote:
>> This was difficult to debug, because the test that fails does the following:
>> - generates a CamiTK extension (.cpp/.h...)
>> - compiles it as a .so library
>> - calls a tool (camitk-config) that loads the generated library.
>> - A segfault happens when a method in the generated library is called.
> I didn't notice the segfault when I reported the bug.
>
>> This works without issue when compiling the package from scratch with Qt
>> 6.11.2.
>> But running the test with the package from Sid/Testing (compiled using Qt
>> 6.10), loading the extension compiled by the test using Qt6.11.2 crashes
>> with the segfault.
>> I known that there should be binary compatibility between Qt 6.10 and 6.11,
>> but it seems that in our case a call to operator QStringList << segfaults in
>> that situation.
> The backtrace of the segfault I just looked at is:
>
> #0 0x00007ffff7cdf73a in QArrayDataPointer<char16_t>::QArrayDataPointer (this=0x6d018294456bcae8, other=<optimized out>)
> at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydatapointer.h:78
> #1 QString::QString (this=0x6d018294456bcae8, other=<optimized out>) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:228
> #2 QtPrivate::QMovableArrayOps<QString>::emplace<QString> (this=0x7fffffffd320, i=0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydataops.h:755
> #3 0x00007fffc406d5ae in QString& QList<QString>::emplaceBack<QString>(QString&&) ()
> at /tmp/camitk-6.0.0/debian/tests/actionAndComponentUsingViewerExtension/build/lib/camitk-6.0/components/libtestcomponents.so.6.0.
> #4 0x00007fffc406d3bb in QList<QString>::append(QString&&) ()
> at /tmp/camitk-6.0.0/debian/tests/actionAndComponentUsingViewerExtension/build/lib/camitk-6.0/components/libtestcomponents.so.6.0.
> #5 0x00007fffc406d12b in QList<QString>::operator<<(QString&&) ()
> at /tmp/camitk-6.0.0/debian/tests/actionAndComponentUsingViewerExtension/build/lib/camitk-6.0/components/libtestcomponents.so.6.0.
> #6 0x00007fffc406cd1a in TestComponents::getFileExtensions() const ()
> at /tmp/camitk-6.0.0/debian/tests/actionAndComponentUsingViewerExtension/build/lib/camitk-6.0/components/libtestcomponents.so.6.0.
> #7 0x00007ffff7cf6e23 in camitk::ExtensionManager::registerNewComponentExtension (ce=<optimized out>, filename=...)
> at ./sdk/libraries/core/ExtensionManager.cpp:323
> #8 0x00007ffff7cfac6d in camitk::ExtensionManager::loadExtension (type=type at entry=camitk::ExtensionManager::COMPONENT, fileName=...)
> at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydata.h:60
> #9 0x00007ffff7cfc1a8 in camitk::ExtensionManager::autoload (type=type at entry=camitk::ExtensionManager::COMPONENT)
> at /usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydata.h:60
> #10 0x00007ffff7cfe0f6 in camitk::ExtensionManager::autoload () at ./sdk/libraries/core/ExtensionManager.cpp:51
> #11 0x00007ffff7d464e4 in camitk::Application::Application
> (this=this at entry=0x7fffffffe180, name=..., theArgc=@0x7fffffffe12c: 2, theArgv=theArgv at entry=0x7fffffffe398, autoloadExtensions=autoloadExtensions at entry=true, registerFileExtension=registerFileExtension at entry=false, useSplashScreen=false) at ./sdk/libraries/core/application/Application.cpp:144
> #12 0x0000555555558000 in main (argc=<optimized out>, argv=0x7fffffffe398) at ./sdk/applications/config/main.cpp:119
>
> The QtPrivate in #2 seems to explain the problem.
>
>> Can you try to just rebuild the package with the latest Qt ?
>> Is there something I should put in debian/control to trigger recompilation
>> for Qt version changes ?
> I've added the Debian Qt maintainers to Cc for that.
>
> The problem seems to be that an extension gets built in the autopkgtest
> that does for some reason use something from QtPrivate:: - and this is
> an extension is for a package that does not depend on qt6-base-private-abi.
>
>> Thanks,
>>
>> Manik.
> cu
> Adrian
>
> BTW: The Debian BTS does not Cc the submitter.
More information about the Debian-med-packaging
mailing list