Fedora Account System
Red Hat Associate
Red Hat Customer
I was in the middle of a large 'dnf upgrade' when my machine crashed. Now I can't upgrade: [666/666] Total 100% | 0.0 B/s | 0.0 B | 00m06s Running transaction terminate called after throwing an instance of 'libdnf5::AssertionError' what(): libdnf5/rpm/transaction.cpp:205: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested Aborted (core dumped) dnf upgrade Reproducible: Always
Thread 1 "dnf" received signal SIGABRT, Aborted. Downloading 4.48 K source file /usr/src/debug/glibc-2.43-7.fc44.x86_64/nptl/pthread_kill.c __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0; (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007ffff74b8d93 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89 #2 0x00007ffff745de8e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff74457b3 in __GI_abort () at abort.c:77 #4 0x00007ffff769a5e2 in __gnu_cxx::__verbose_terminate_handler () at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95 #5 0x00007ffff76b1b1c in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48 #6 0x00007ffff769a159 in std::terminate () at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:58 #7 0x00007ffff76b1dc8 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x5555556df550 <typeinfo for libdnf5::AssertionError>, dest=0x7ffff79bc180 <libdnf5::AssertionError::~AssertionError()>) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:98 #8 0x00007ffff79a02b9 in libdnf5::rpm::Transaction::fill (this=<optimized out>, transaction=<optimized out>) at /usr/include/c++/16/bits/allocator.h:189 #9 0x00007ffff7a641a6 in libdnf5::base::Transaction::Impl::_run(std::unique_ptr<libdnf5::rpm::TransactionCallbacks, std::default_delete<libd--Type <RET> for more, q to quit, c to continue without paging-- onCallbacks> >&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<unsigned int>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .isra.0] (this=0x555555862be0, callbacks=..., description="/usr/bin/dnf upgrade", comment="", test_only=false, user_id=Python Exception <class 'gdb.error'>: value has been optimized out ...) at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/libdnf5/base/transaction.cpp:1016 #10 0x00007ffff7a5953d in libdnf5::base::Transaction::Impl::run (this=<optimized out>, callbacks=..., description="/usr/bin/dnf upgrade", user_id=Python Exception <class 'gdb.error'>: value has been optimized out ..., comment="") at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/libdnf5/base/transaction.cpp:936 #11 libdnf5::base::Transaction::run (this=this@entry=0x555555a524c0) at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/libdnf5/base/transaction.cpp:450 #12 0x0000555555650711 in dnf5::Context::Impl::download_and_run (this=0x55555573a7f0, transaction=...) at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/dnf5/context.cpp:513 #13 0x000055555558f2a5 in dnf5::Context::download_and_run (this=0x7fffffffd9d0, transaction=<optimized out>) at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/dnf5/context.cpp:658 #14 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/dnf5-5.4.2.1-1.fc44.x86_64/dnf5/main.cpp:1594
Minimal repro: 'dnf reinstall glibc'... Repositories loaded. Package Arch Version Repository Size Removing dependent packages: glibc-all-langpacks x86_64 0:2.43-5.fc44 00twosheds-updates 227.2 MiB glibc-common x86_64 0:2.43-5.fc44 00twosheds-updates 1.0 MiB glibc-devel x86_64 0:2.43-5.fc44 00twosheds-updates 2.3 MiB glibc-gconv-extra x86_64 0:2.43-5.fc44 00twosheds-updates 7.4 MiB Reinstalling: glibc x86_64 0:2.43-7.fc44 updates 6.9 MiB replacing glibc x86_64 0:2.43-7.fc44 <unknown> 6.9 MiB replacing glibc x86_64 0:2.43-5.fc44 00twosheds-updates 6.9 MiB Upgrading: glibc i686 0:2.43-7.fc44 updates 5.7 MiB replacing glibc i686 0:2.43-5.fc44 00twosheds-updates 5.7 MiB glibc-devel i686 0:2.43-7.fc44 updates 2.3 MiB replacing glibc-devel i686 0:2.43-5.fc44 00twosheds-updates 2.3 MiB glibc-gconv-extra i686 0:2.43-7.fc44 updates 6.7 MiB replacing glibc-gconv-extra i686 0:2.43-5.fc44 00twosheds-updates 6.7 MiB glibc-langpack-cs x86_64 0:2.43-7.fc44 updates 2.9 MiB replacing glibc-langpack-cs x86_64 0:2.43-5.fc44 00twosheds-updates 2.9 MiB glibc-langpack-en x86_64 0:2.43-7.fc44 updates 5.7 MiB replacing glibc-langpack-en x86_64 0:2.43-5.fc44 00twosheds-updates 5.7 MiB glibc-static i686 0:2.43-7.fc44 updates 26.8 MiB replacing glibc-static i686 0:2.43-5.fc44 00twosheds-updates 26.9 MiB glibc-static x86_64 0:2.43-7.fc44 updates 43.0 MiB replacing glibc-static x86_64 0:2.43-5.fc44 00twosheds-updates 43.0 MiB libnsl i686 0:2.43-7.fc44 updates 105.3 KiB replacing libnsl i686 0:2.43-5.fc44 00twosheds-updates 105.2 KiB libnsl x86_64 0:2.43-7.fc44 updates 101.9 KiB replacing libnsl x86_64 0:2.43-5.fc44 00twosheds-updates 101.9 KiB Transaction Summary: Reinstalling: 1 package Upgrading: 9 packages Replacing: 11 packages Removing: 4 packages Total size of inbound packages is 21 MiB. Need to download 0 B. After this operation, 245 MiB will be freed (install 100 MiB, remove 345 MiB). Is this ok [y/N]: y [ 1/10] glibc-0:2.43-7.fc44.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 2/10] libnsl-0:2.43-7.fc44.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 3/10] glibc-0:2.43-7.fc44.i686 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 4/10] libnsl-0:2.43-7.fc44.i686 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 5/10] glibc-gconv-extra-0:2.43-7.fc44.i686 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 6/10] glibc-devel-0:2.43-7.fc44.i686 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 7/10] glibc-langpack-cs-0:2.43-7.fc44.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 8/10] glibc-langpack-en-0:2.43-7.fc44.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [ 9/10] glibc-static-0:2.43-7.fc44.i686 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded [10/10] glibc-static-0:2.43-7.fc44.x86_64 100% | 0.0 B/s | 0.0 B | 00m00s >>> Already downloaded --------------------------------------------------------------------------------------------------------------------------------------------- [10/10] Total 100% | 0.0 B/s | 0.0 B | 00m00s Running transaction terminate called after throwing an instance of 'libdnf5::AssertionError' what(): libdnf5/rpm/transaction.cpp:205: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested Aborted sudo dnf reinstall glibc
Thank you for the report, we are aware about this issue and it is tracked in upstream here: https://github.com/rpm-software-management/dnf5/issues/518 We even have a solution: https://github.com/rpm-software-management/dnf5/pull/2753 but it is not released in fedora yet. If you want you can try using our nightly copr repo https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf-nightly/ which has new builds. If you do install the newer version the next dnf run should likely still fail but it will report that you have some duplicate packages and it will guide you to remove the duplicate. You can also find them manually if you just want to fix the situation without installing the new dnf version.
*** This bug has been marked as a duplicate of bug 2350481 ***