Bug#1088262: python-apt: ImportError: /usr/lib/python3/dist-packages/apt_pkg.cpython-312-x86_64-linux-gnu.so: undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm
On Tue, Nov 26, 2024 at 09:24:44AM +0100, Julian Andres Klode wrote:
> (Dropping the CCs, also use X-Debbugs-Cc otherwise the thread
> splits in two)
>
> On Mon, Nov 25, 2024 at 06:59:49PM -0800, Otto Kekäläinen wrote:
> > Source: python-apt
> > Version: 2.9.1
> > Severity: serious
> >
> > Seems the latest version of python-apt has some serious regressions as
> > https://tracker.debian.org/pkg/python-apt shows wide-spread
> > autopkgtest failures.
> >
> > In a clean Debian unstable container a simple installation is failing with:
> >
> > Hit:1 http://deb.debian.org/debian sid InRelease
> > Get:2 http://deb.debian.org/debian sid/main all Contents (deb) [43.5 MB]
> > Get:3 http://deb.debian.org/debian sid/main amd64 Contents (deb) [15.8 MB]
> > Traceback (most recent call last):
> > File "/usr/lib/cnf-update-db", line 3, in <module>
> > import apt_pkg
> > ImportError: /usr/lib/python3/dist-packages/apt_pkg.cpython-312-x86_64-linux-gnu.so:
> > undefined symbol:
> > _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm,
> > version APTPKG_6.0
>
> This is highly awkward, that is a C++ standard library symbol:
>
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> >::_M_replace(unsigned long, unsigned long, char
> const*, unsigned long)
>
> It's in a template, and we build all inline functions with hidden
> visibility in APT; so it's in a sense expected, but also unexpected,
> as everything that uses the function keeps its own copy of it.
>
> But I suppose this is an issue because other versions don't have
> the versioning tag and the linker accidentally picked a symbol that
> I don't know, doesn't really exist? I don't know how this happens.
>
> > Fetched 59.3 MB in 13s (4620 kB/s)
> > Reading package lists...
> > E: Problem executing scripts APT::Update::Post-Invoke-Success 'if
> > /usr/bin/test -w /var/lib/command-not-found/ -a -e
> > /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
> > E: Sub-process returned an error code
> > Error: error building at STEP "RUN apt-get install -q --yes
> > command-not-found && apt-get update -q": error while running
> > runtime: exit status 100
> >
> > Please take a look what is going on.
> >
> >
> >
> >
> >
> >
> > Please also consider using better CI before uploads.
>
> So the tests run at build-time and I also ran a full build and
> installed test suite run in autopkgtest, and they of course all
> import that module, so I don't know how we can get into that
> spot, but I can reproduce it.
The tests were skipped at build time, d'oh!
I: pybuild base:311: env PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_apt/build python3.13 tests/test_all.py
[tests] Skipping because sources.list is not readable
Some of them are just smoke tests relying on the host's APT
lists and I suppose they don't exist anymore.
I wonder if the same thing happened in my autopkgtest.
--
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer i speak de, en
Reply to: