Bug 2330562 - python3-libdnf segfaults when iterating over an iterator of a ConfigParser section
Summary: python3-libdnf segfaults when iterating over an iterator of a ConfigParser se...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: libdnf
Version: 41
Hardware: Unspecified
OS: Unspecified
unspecified
urgent
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 2321657 2330927
TreeView+ depends on / blocked
 
Reported: 2024-12-05 13:08 UTC by Miro Hrončok
Modified: 2024-12-22 02:00 UTC (History)
13 users (show)

Fixed In Version: libdnf-0.73.4-2.fc41 libdnf-0.73.4-2.fc42
Clone Of:
Environment:
Last Closed: 2024-12-10 18:19:45 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
journalctl (539.95 KB, text/plain)
2024-12-05 14:53 UTC, Miro Hrončok
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Fedora Package Sources libdnf pull-request 10 0 None None None 2024-12-10 13:14:18 UTC
Fedora Package Sources libdnf pull-request 11 0 None None None 2024-12-10 13:14:18 UTC
Github python cpython issues 127682 0 None open Regression of 3.13.1 with iterator creation being duplicated 2024-12-06 18:03:45 UTC
Github rpm-software-management libdnf pull 1682 0 None open Fix a segfault in iterator of a ConfigParser section 2024-12-06 17:06:17 UTC
Github swig swig issues 3086 0 None open Segfault in Python when an object returns this and multiple Python objects wrap one C++ object 2024-12-09 13:01:45 UTC
Red Hat Bugzilla 2331665 0 unspecified CLOSED libcomps segfaults when iterating over and iterator from an iterator 2024-12-22 02:01:04 UTC

Description Miro Hrončok 2024-12-05 13:08:10 UTC
As reported by @adamwill in https://bodhi.fedoraproject.org/updates/FEDORA-2024-3f975b9c0e

"""
So, this seems to break anaconda in network install image (but not ostree installer image, interestingly). This is consistent across 8 runs (BIOS/UEFI, each repeated once, on prod and stg). In the logs we see:

23:36:19,204 INF core.threads: Thread Failed: AnaPayloadThread (140120481064640)
23:36:19,205 DBG exception: running handleException
23:36:19,212 CRT exception: Traceback (most recent call last):

  File "/usr/lib64/python3.13/site-packages/pyanaconda/core/threads.py", line 280, in run
    threading.Thread.run(self)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^

  File "/usr/lib64/python3.13/threading.py", line 992, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/usr/lib64/python3.13/site-packages/pyanaconda/payload/manager.py", line 111, in _task_run_callback
    self._run(*args, **kwargs)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^

  File "/usr/lib64/python3.13/site-packages/pyanaconda/payload/manager.py", line 162, in _run
    payload.setup(self.report_progress, **kwargs)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/usr/lib64/python3.13/site-packages/pyanaconda/payload/dnf/payload.py", line 280, in setup
    set_up_sources(self.proxy)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^

  File "/usr/lib64/python3.13/site-packages/pyanaconda/ui/lib/payload.py", line 127, in set_up_sources
    sync_run_task(task_proxy)
    ~~~~~~~~~~~~~^^^^^^^^^^^^

  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/__init__.py", line 46, in sync_run_task
    while task_proxy.IsRunning:
          ^^^^^^^^^^^^^^^^^^^^

  File "/usr/lib/python3.13/site-packages/dasbus/client/proxy.py", line 164, in __getattr__
    return member.get()
           ~~~~~~~~~~^^

  File "/usr/lib/python3.13/site-packages/dasbus/client/property.py", line 43, in get
    return self.__get__(None, None)  # pylint: disable=unnecessary-dunder-call
           ~~~~~~~~~~~~^^^^^^^^^^^^

  File "/usr/lib/python3.13/site-packages/dasbus/client/property.py", line 54, in __get__
    return self._getter()
           ~~~~~~~~~~~~^^

  File "/usr/lib/python3.13/site-packages/dasbus/client/handler.py", line 382, in _get_property_value
    variant = self._call_method(
        "org.freedesktop.DBus.Properties",
    ...<4 lines>...
        property_spec.name
    )

  File "/usr/lib/python3.13/site-packages/dasbus/client/handler.py", line 450, in _call_method
    return self._get_method_reply(
           ~~~~~~~~~~~~~~~~~~~~~~^
        self._client.sync_call,
        ^^^^^^^^^^^^^^^^^^^^^^^
        *args,
        ^^^^^^
        **kwargs,
        ^^^^^^^^^
    )
    ^

  File "/usr/lib/python3.13/site-packages/dasbus/client/handler.py", line 483, in _get_method_reply
    return self._handle_method_error(error)
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^

  File "/usr/lib/python3.13/site-packages/dasbus/client/handler.py", line 509, in _handle_method_error
    raise exception from None

dasbus.error.DBusError: Message recipient disconnected from message bus without replying

weirdly, there's a somewhat similar bug that showed up recently caused by a pygobject3 update: https://bugzilla.redhat.com/show_bug.cgi?id=2329587 . But I think that's just a coincidence.
"""

Comment 2 Miro Hrončok 2024-12-05 14:53:43 UTC
Created attachment 2061341 [details]
journalctl

Dec 05 15:48:15 fedora systemd-coredump[2651]: Process 2372 (python3) of user 0 dumped core.
                                               
                                               Module libsasldb.so from rpm cyrus-sasl-2.1.28-27.fc41.x86_64
                                               Module libanonymous.so from rpm cyrus-sasl-2.1.28-27.fc41.x86_64
                                               Module libnss_myhostname.so.2 from rpm systemd-257~rc3-1.fc42.x86_64
                                               Module _smartcols.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module libcomps.so.0 from rpm libcomps-0.1.21-3.fc41.x86_64
                                               Module _libpycomps.so from rpm libcomps-0.1.21-3.fc41.x86_64
                                               Module _hawkey.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _utils.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _transaction.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _repo.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _module.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module libcrypt.so.2 from rpm libxcrypt-4.4.36-11.fc42.x86_64
                                               Module libsasl2.so.3 from rpm cyrus-sasl-2.1.28-27.fc41.x86_64
                                               Module libevent-2.1.so.7 from rpm libevent-2.1.12-14.fc41.x86_64
                                               Module libkrb5support.so.0 from rpm krb5-1.21.3-3.fc42.x86_64
                                               Module libk5crypto.so.3 from rpm krb5-1.21.3-3.fc42.x86_64
                                               Module libkrb5.so.3 from rpm krb5-1.21.3-3.fc42.x86_64
                                               Module libunistring.so.5 from rpm libunistring-1.1-8.fc41.x86_64
                                               Module libgssapi_krb5.so.2 from rpm krb5-1.21.3-3.fc42.x86_64
                                               Module libpsl.so.5 from rpm libpsl-0.21.5-4.fc41.x86_64
                                               Module libssh.so.4 from rpm libssh-0.11.1-1.fc42.x86_64
                                               Module libidn2.so.0 from rpm libidn2-2.3.7-2.fc41.x86_64
                                               Module libnghttp2.so.14 from rpm nghttp2-1.64.0-1.fc42.x86_64
                                               Module libzck.so.1 from rpm zchunk-1.5.1-1.fc41.x86_64
                                               Module libcurl.so.4 from rpm curl-8.10.1-2.fc42.x86_64
                                               Module libsmartcols.so.1 from rpm util-linux-2.40.2-8.fc42.x86_64
                                               Module libmodulemd.so.2 from rpm libmodulemd-2.15.0-14.fc41.x86_64
                                               Module libsolvext.so.1 from rpm libsolv-0.7.31-1.fc42.x86_64
                                               Module libsolv.so.1 from rpm libsolv-0.7.31-1.fc42.x86_64
                                               Module librepo.so.0 from rpm librepo-1.19.0-1.fc42.x86_64
                                               Module libdnf.so.2 from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _conf.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _common_types.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module _error.so from rpm libdnf-0.73.4-1.fc42.x86_64
                                               Module libtss2-mu.so.0 from rpm tpm2-tss-4.1.3-3.fc41.x86_64
                                               Module libtss2-sys.so.1 from rpm tpm2-tss-4.1.3-3.fc41.x86_64
                                               Module libattr.so.1 from rpm attr-2.5.2-4.fc41.x86_64
                                               Module libtss2-esys.so.0 from rpm tpm2-tss-4.1.3-3.fc41.x86_64
                                               Module libtss2-rc.so.0 from rpm tpm2-tss-4.1.3-3.fc41.x86_64
                                               Module librpm_sequoia.so.1 from rpm rust-rpm-sequoia-1.7.0-2.fc41.x86_64
                                               Module libacl.so.1 from rpm acl-2.3.2-2.fc41.x86_64
                                               Module libfsverity.so.0 from rpm fsverity-utils-1.6-1.fc42.x86_64
                                               Module libimaevm.so.5 from rpm ima-evm-utils-1.6.2-3.fc42.x86_64
                                               Module libelf.so.1 from rpm elfutils-0.192-7.fc42.x86_64
                                               Module libdw.so.1 from rpm elfutils-0.192-7.fc42.x86_64
                                               Module liblua-5.4.so from rpm lua-5.4.7-1.fc42.x86_64
                                               Module libpopt.so.0 from rpm popt-1.19-7.fc41.x86_64
                                               Module libmagic.so.1 from rpm file-5.45-8.fc42.x86_64
                                               Module librpmio.so.10 from rpm rpm-4.20.0-1.fc42.x86_64
                                               Module librpm.so.10 from rpm rpm-4.20.0-1.fc42.x86_64
                                               Module librpmsign.so.10 from rpm rpm-4.20.0-1.fc42.x86_64
                                               Module librpmbuild.so.10 from rpm rpm-4.20.0-1.fc42.x86_64
                                               Module _rpm.so from rpm rpm-4.20.0-1.fc42.x86_64
                                               Module id128.cpython-313-x86_64-linux-gnu.so from rpm python-systemd-235-11.fc41.x86_64
                                               Module _reader.cpython-313-x86_64-linux-gnu.so from rpm python-systemd-235-11.fc41.x86_64
                                               Module libsystemd.so.0 from rpm systemd-257~rc3-1.fc42.x86_64
                                               Module _journal.cpython-313-x86_64-linux-gnu.so from rpm python-systemd-235-11.fc41.x86_64
                                               Module _pickle.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _multibytecodec.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module grp.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _json.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _queue.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libexpat.so.1 from rpm expat-2.6.4-1.fc42.x86_64
                                               Module pyexpat.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _elementtree.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _datetime.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module unicodedata.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libnvme.so.1 from rpm libnvme-1.11.1-1.fc42.x86_64
                                               Module libbd_nvme.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libcom_err.so.2 from rpm e2fsprogs-1.47.1-6.fc42.x86_64
                                               Module libe2p.so.2 from rpm e2fsprogs-1.47.1-6.fc42.x86_64
                                               Module libext2fs.so.2 from rpm e2fsprogs-1.47.1-6.fc42.x86_64
                                               Module libbd_fs.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libfdisk.so.1 from rpm util-linux-2.40.2-8.fc42.x86_64
                                               Module libbd_part.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_mdraid.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_dm.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_mpath.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libgpg-error.so.0 from rpm libgpg-error-1.51-1.fc42.x86_64
                                               Module libjson-c.so.5 from rpm json-c-0.18-1.fc42.x86_64
                                               Module libvolume_key.so.1 from rpm volume_key-0.3.12-23.fc41.x86_64
                                               Module libkeyutils.so.1 from rpm keyutils-1.6.3-4.fc41.x86_64
                                               Module libnspr4.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libplc4.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libplds4.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libnssutil3.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libnss3.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libsmime3.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libssl3.so from rpm nss-3.106.0-1.fc42.x86_64
                                               Module libcryptsetup.so.12 from rpm cryptsetup-2.7.5-1.fc42.x86_64
                                               Module libbd_crypto.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_loop.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_swap.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libbd_btrfs.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libyaml-0.so.2 from rpm libyaml-0.2.5-15.fc41.x86_64
                                               Module libdevmapper.so.1.02 from rpm lvm2-2.03.27-1.fc42.x86_64
                                               Module libbd_lvm-dbus.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libzstd.so.1 from rpm zstd-1.5.6-2.fc41.x86_64
                                               Module libcap.so.2 from rpm libcap-2.71-1.fc42.x86_64
                                               Module libkmod.so.2 from rpm kmod-33-1.fc42.x86_64
                                               Module libudev.so.1 from rpm systemd-257~rc3-1.fc42.x86_64
                                               Module libbd_utils.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libblockdev.so.3 from rpm libblockdev-3.2.1-1.fc42.x86_64
                                               Module libgmp.so.10 from rpm gmp-6.3.0-2.fc41.x86_64
                                               Module libmpfr.so.6 from rpm mpfr-4.2.1-5.fc41.x86_64
                                               Module libbytesize.so.1 from rpm libbytesize-2.11-99.fc42.x86_64
                                               Module _ctypes.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libblkid.so.1 from rpm util-linux-2.40.2-8.fc42.x86_64
                                               Module libmount.so.1 from rpm util-linux-2.40.2-8.fc42.x86_64
                                               Module libgio-2.0.so.0 from rpm glib2-2.83.0-2.fc42.x86_64
                                               Module _cairo.cpython-313-x86_64-linux-gnu.so from rpm pycairo-1.25.1-5.fc41.x86_64
                                               Module libbrotlicommon.so.1 from rpm brotli-1.1.0-5.fc41.x86_64
                                               Module libgraphite2.so.3 from rpm graphite2-1.3.14-16.fc41.x86_64
                                               Module libXau.so.6 from rpm libXau-1.0.11-7.fc41.x86_64
                                               Module libbrotlidec.so.1 from rpm brotli-1.1.0-5.fc41.x86_64
                                               Module libharfbuzz.so.0 from rpm harfbuzz-10.1.0-1.fc42.x86_64
                                               Module libxml2.so.2 from rpm libxml2-2.12.8-2.fc41.x86_64
                                               Module libpixman-1.so.0 from rpm pixman-0.44.0-0.fc42.x86_64
                                               Module libxcb-shm.so.0 from rpm libxcb-1.17.0-3.fc42.x86_64
                                               Module libxcb-render.so.0 from rpm libxcb-1.17.0-3.fc42.x86_64
                                               Module libxcb.so.1 from rpm libxcb-1.17.0-3.fc42.x86_64
                                               Module libXrender.so.1 from rpm libXrender-0.9.11-7.fc41.x86_64
                                               Module libXext.so.6 from rpm libXext-1.3.6-2.fc41.x86_64
                                               Module libX11.so.6 from rpm libX11-1.8.10-2.fc42.x86_64
                                               Module libfreetype.so.6 from rpm freetype-2.13.3-1.fc42.x86_64
                                               Module libfontconfig.so.1 from rpm fontconfig-2.15.0-8.fc41.x86_64
                                               Module libpng16.so.16 from rpm libpng-1.6.44-1.fc42.x86_64
                                               Module libcairo-gobject.so.2 from rpm cairo-1.18.2-1.fc42.x86_64
                                               Module libcairo.so.2 from rpm cairo-1.18.2-1.fc42.x86_64
                                               Module _gi_cairo.cpython-313-x86_64-linux-gnu.so from rpm pygobject3-3.50.0-2.fc42.x86_64
                                               Module _asyncio.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _contextvars.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module binascii.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _struct.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libssl.so.3 from rpm openssl-3.2.2-8.fc42.x86_64
                                               Module _ssl.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module array.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _socket.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _heapq.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libgmodule-2.0.so.0 from rpm glib2-2.83.0-2.fc42.x86_64
                                               Module libffi.so.8 from rpm libffi-3.4.6-3.fc42.x86_64
                                               Module libgobject-2.0.so.0 from rpm glib2-2.83.0-2.fc42.x86_64
                                               Module libgirepository-1.0.so.1 from rpm gobject-introspection-1.82.0-1.fc42.x86_64
                                               Module libglib-2.0.so.0 from rpm glib2-2.83.0-2.fc42.x86_64
                                               Module _gi.cpython-313-x86_64-linux-gnu.so from rpm pygobject3-3.50.0-2.fc42.x86_64
                                               Module libmpdec.so.3 from rpm mpdecimal-2.5.1-16.fc41.x86_64
                                               Module _decimal.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libb2.so.1 from rpm libb2-0.98.1-12.fc41.x86_64
                                               Module _blake2.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libcrypto.so.3 from rpm openssl-3.2.2-8.fc42.x86_64
                                               Module _hashlib.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libuuid.so.1 from rpm util-linux-2.40.2-8.fc42.x86_64
                                               Module _uuid.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _random.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _bisect.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module math.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module select.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module _posixsubprocess.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module fcntl.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module liblzma.so.5 from rpm xz-5.6.3-2.fc42.x86_64
                                               Module _lzma.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libbz2.so.1 from rpm bzip2-1.0.8-19.fc41.x86_64
                                               Module _bz2.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libz.so.1 from rpm zlib-ng-2.2.2-1.fc42.x86_64
                                               Module zlib.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module libpcre2-8.so.0 from rpm pcre2-10.44-1.fc41.1.x86_64
                                               Module libselinux.so.1 from rpm libselinux-3.7-7.fc42.x86_64
                                               Module _selinux.cpython-313-x86_64-linux-gnu.so from rpm libselinux-3.7-7.fc42.x86_64
                                               Module _opcode.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Module syslog.cpython-313-x86_64-linux-gnu.so from rpm python3.13-3.13.1-1.fc42.x86_64
                                               Stack trace of thread 2649:
                                               #0  0x00007f8b9b8cbb44 __pthread_kill_implementation (libc.so.6 + 0x73b44)
                                               #1  0x00007f8b9b8722de raise (libc.so.6 + 0x1a2de)
                                               #2  0x00007f8b9b872410 __restore_rt (libc.so.6 + 0x1a410)
                                               #3  0x00007f8b880c7dc2 _wrap_PreserveOrderMapStringStringIterator___next__ (_common_types.so + 0x26dc2)
                                               #4  0x00007f8b9bbbbc5f n/a (n/a + 0x0)
                                               #5  0x00007f8b9bb87977 n/a (n/a + 0x0)
                                               #6  0x00007f8b9bb9d995 n/a (n/a + 0x0)
                                               #7  0x00007f8b9bc1caa3 n/a (n/a + 0x0)
                                               #8  0x00007f8b9bc4df2b n/a (n/a + 0x0)
                                               #9  0x00007f8b9bb9a51a n/a (n/a + 0x0)
                                               #10 0x00007f8b9bbcc09f n/a (n/a + 0x0)
                                               #11 0x00007f8b9bbbb385 n/a (n/a + 0x0)
                                               #12 0x00007f8b9bb87abd n/a (n/a + 0x0)
                                               #13 0x00007f8b9bb9a772 n/a (n/a + 0x0)
                                               #14 0x00007f8b9bbf4d02 n/a (n/a + 0x0)
                                               #15 0x00007f8b9bb9f167 n/a (n/a + 0x0)
                                               #16 0x00007f8b9bbf4d02 n/a (n/a + 0x0)
                                               #17 0x00007f8b9bceb5e7 n/a (n/a + 0x0)
                                               #18 0x00007f8b9bc5ad9c n/a (n/a + 0x0)
                                               #19 0x00007f8b9b8c9cb8 start_thread (libc.so.6 + 0x71cb8)
                                               #20 0x00007f8b9b94cedc __clone3 (libc.so.6 + 0xf4edc)
                                               
                                               Stack trace of thread 2417:
                                               #0  0x00007f8b9b94ad2d syscall (libc.so.6 + 0xf2d2d)
                                               #1  0x00007f8b8c938b1d g_cond_wait (libglib-2.0.so.0 + 0x6bb1d)
                                               #2  0x00007f8b8c8d7acb g_async_queue_pop_intern_unlocked (libglib-2.0.so.0 + 0xaacb)
                                               #3  0x00007f8b8c941763 g_thread_pool_spawn_thread (libglib-2.0.so.0 + 0x74763)
                                               #4  0x00007f8b8c941677 g_thread_proxy (libglib-2.0.so.0 + 0x74677)
                                               #5  0x00007f8b9b8c9cb8 start_thread (libc.so.6 + 0x71cb8)
                                               #6  0x00007f8b9b94cedc __clone3 (libc.so.6 + 0xf4edc)
                                               
                                               Stack trace of thread 2372:
                                               #0  0x00007f8b9b8d1fb2 __syscall_cancel_arch (libc.so.6 + 0x79fb2)
                                               #1  0x00007f8b9b8c5d93 __internal_syscall_cancel (libc.so.6 + 0x6dd93)
                                               #2  0x00007f8b9b8c5dd4 __syscall_cancel (libc.so.6 + 0x6ddd4)
                                               #3  0x00007f8b9b93ff06 ppoll (libc.so.6 + 0xe7f06)
                                               #4  0x00007f8b8c96eae3 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xa1ae3)
                                               #5  0x00007f8b8c9132f7 g_main_loop_run (libglib-2.0.so.0 + 0x462f7)
                                               #6  0x00007f8b8c83e056 ffi_call_unix64 (libffi.so.8 + 0x9056)
                                               #7  0x00007f8b8c83974d ffi_call_int.lto_priv.0 (libffi.so.8 + 0x474d)
                                               #8  0x00007f8b8c83c64e ffi_call (libffi.so.8 + 0x764e)
                                               #9  0x00007f8b8ca520a1 n/a (_gi.cpython-313-x86_64-linux-gnu.so + 0x2c0a1)
                                               #10 0x00007f8b8ca4fbab n/a (_gi.cpython-313-x86_64-linux-gnu.so + 0x29bab)
                                               #11 0x00007f8b8ca394e2 n/a (_gi.cpython-313-x86_64-linux-gnu.so + 0x134e2)
                                               #12 0x00007f8b9bb83fcb n/a (n/a + 0x0)
                                               #13 0x00007f8b9bb9d995 n/a (n/a + 0x0)
                                               #14 0x00007f8b9bc6a01b n/a (n/a + 0x0)
                                               #15 0x00007f8b9bc84574 n/a (n/a + 0x0)
                                               #16 0x00007f8b9bbb4127 n/a (n/a + 0x0)
                                               #17 0x00007f8b9bb87977 n/a (n/a + 0x0)
                                               #18 0x00007f8b9bb9d995 n/a (n/a + 0x0)
                                               #19 0x00007f8b9bca3d4d n/a (n/a + 0x0)
                                               #20 0x00007f8b9bc9f25e n/a (n/a + 0x0)
                                               #21 0x00007f8b9bc5931c n/a (n/a + 0x0)
                                               #22 0x00007f8b9b85c0c8 __libc_start_call_main (libc.so.6 + 0x40c8)
                                               #23 0x00007f8b9b85c18b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x418b)
                                               #24 0x000055f827c78095 n/a (n/a + 0x0)
                                               ELF object binary architecture: AMD x86-64

Comment 3 Miro Hrončok 2024-12-05 15:01:10 UTC
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]: Fatal Python error: Segmentation fault
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]: Current thread 0x00007f8b818986c0 (most recent call first):
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/libdnf/common_types.py", line 732 in __next__
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/libdnf/conf.py", line 1825 in ConfigParser__options
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib/python3.13/site-packages/dnf/conf/config.py", line 143 in _populate
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib/python3.13/site-packages/dnf/conf/config.py", line 479 in read
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py", line 119 in _create_base
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py", line 111 in _base
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/dnf/dnf_manager.py", line 480 in clear_cache
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/dnf/initialization.py", line 198 in _configure_dnf_manager
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/dnf/initialization.py", line 107 in run
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 107 in _task_run_callback
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 94 in _thread_run_callback
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/threading.py", line 992 in run
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/core/threads.py", line 280 in run
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/threading.py", line 1041 in _bootstrap_inner
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/threading.py", line 1012 in _bootstrap
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]: Thread 0x00007f8b9b76c740 (most recent call first):
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/gi/overrides/GLib.py", line 497 in run
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/base/base.py", line 92 in run
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/__main__.py", line 29 in <module>
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "<frozen runpy>", line 88 in _run_code
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]:   File "<frozen runpy>", line 198 in _run_module_as_main
Dec 05 15:48:14 fedora org.fedoraproject.Anaconda.Modules.Payloads[2372]: Extension modules: selinux._selinux, gi._gi, cairo._cairo, gi._gi_cairo, systemd._journal, systemd._reader, systemd.id128, rpm._rpm, libdnf._error, libdnf._common_types, libdnf._conf, libdnf._module, libdnf._repo, libdnf._transaction, libdnf._utils, hawkey._hawkey, libcomps._libpycomps, libdnf._smartcols (total: 18)

Comment 4 Miro Hrončok 2024-12-05 15:09:46 UTC
I can get this on tty2:

# python3
...
>>> import dnf
>>> base = dnf.Base()
>>> base.conf.read()
Segmentation fault (core dumped)

Comment 5 Miro Hrončok 2024-12-05 15:22:18 UTC
(But not in podman or mock.)

On the installer image:

# python3 -X dev -c 'import dnf; base = dnf.Base(); base.conf.read()'
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute
<frozen importlib._bootstrap>:488: DeprecationWarning: builtin type swigvarlink has no __module__ attribute
Fatal Python error: Segmentation fault

Current thread 0x00007fb7e44eb740 (most recent call first):
  File "/usr/lib64/python3.13/site-packages/libdnf/common_types.py", line 732 in __next__
  File "/usr/lib64/python3.13/site-packages/libdnf/conf.py", line 1825 in ConfigParser__options
  File "/usr/lib/python3.13/site-packages/dnf/conf/config.py", line 143 in _populate
  File "/usr/lib/python3.13/site-packages/dnf/conf/config.py", line 479 in read
  File "<string>", line 1 in <module>

Extension modules: libdnf._error, libdnf._common_types, libdnf._conf, libdnf._module, libdnf._repo, libdnf._transaction, libdnf._utils, rpm._rpm, hawkey._hawkey, libcomps._libpycomps, libdnf._smartcols (total: 11)


This sound very similar to bz2318762

Comment 6 Miro Hrončok 2024-12-05 15:42:26 UTC
>>> import libdnf
>>> parser = libdnf.conf.ConfigParser()
>>> parser.read('/etc/dnf/dnf.conf')
['/etc/dnf/dnf.conf']
>>> parser.hasSection('main')
True
>>> parser.options('main')

#0  Iterator_Sl_libdnf_PreserveOrderMap_Sl_std_string_Sc_std_string_Sg__Sg__next (self=0x555555894430) at /usr/src/debug/libdnf-0.73.4-1.fc42.x86_64/build-py3/bindings/python/CMakeFiles/_common_types.dir/common_typesPYTHON_wrap.cxx:6053
#1  _wrap_PreserveOrderMapStringStringIterator___next__ (self=<optimized out>, args=<optimized out>) at /usr/src/debug/libdnf-0.73.4-1.fc42.x86_64/build-py3/bindings/python/CMakeFiles/_common_types.dir/common_typesPYTHON_wrap.cxx:16161
#2  0x00007ffff7b6dc5f in cfunction_vectorcall_O (func=0x7fffe91fe250, args=0x7fffe96ee740, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/cpython/methodobject.h:50
#3  0x00007ffff7b39977 in _PyObject_VectorcallTstate (tstate=0x7ffff7f3b870 <_PyRuntime+283024>, callable=0x7fffe91fe250, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_call.h:168
#4  PyObject_Vectorcall (callable=0x7fffe91fe250, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/call.c:327
#5  0x00007ffff7b4f995 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/generated_cases.c.h:813
#6  0x00007ffff7bceaa3 in _PyEval_EvalFrame (tstate=0x7ffff7f3b870 <_PyRuntime+283024>, frame=0x7fffe96ee6e0, throwflag=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#7  _PyEval_Vector (tstate=0x7ffff7f3b870 <_PyRuntime+283024>, func=0x7fffe92145e0, locals=0x0, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:1811
#8  _PyFunction_Vectorcall (func=0x7fffe92145e0, stack=<optimized out>, nargsf=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/call.c:413
#9  _PyObject_VectorcallTstate (tstate=0x7ffff7f3b870 <_PyRuntime+283024>, callable=0x7fffe92145e0, args=<optimized out>, nargsf=<optimized out>, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_call.h:168
#10 vectorcall_unbound (tstate=<optimized out>, unbound=<optimized out>, func=<optimized out>, args=<optimized out>, nargs=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:2566
#11 vectorcall_method (name=name@entry=0x7ffff7f00ac0 <_PyRuntime+41952>, args=args@entry=0x7fffffffdf60, nargs=nargs@entry=1) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:2597
#12 0x00007ffff7bfff2b in slot_tp_iternext (self=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:9719
#13 0x00007ffff7b4c51a in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/object.h:336
#14 0x00007ffff7c1c01b in PyEval_EvalCode (co=0x7fffe91c9e30, globals=<optimized out>, locals=0x7fffe961b300) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:601
#15 0x00007ffff7c36574 in builtin_exec_impl (module=<optimized out>, source=0x7fffe91c9e30, globals=0x7fffe961b300, locals=0x7fffe961b300, closure=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/bltinmodule.c:1145
#16 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/clinic/bltinmodule.c.h:556
#17 0x00007ffff7b4d4ca in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/generated_cases.c.h:1217
#18 0x00007ffff7c1c01b in PyEval_EvalCode (co=0x7fffe93dd730, globals=<optimized out>, locals=0x7fffe961b300) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:601
#19 0x00007ffff7c36574 in builtin_exec_impl (module=<optimized out>, source=0x7fffe93dd730, globals=0x7fffe961b300, locals=0x7fffe961b300, closure=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/bltinmodule.c:1145
#20 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/clinic/bltinmodule.c.h:556
#21 0x00007ffff7b66127 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=0x7fffe97f2200, args=0x7fffe96ee180, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/cpython/methodobject.h:50
#22 0x00007ffff7b39977 in _PyObject_VectorcallTstate (tstate=0x7ffff7f3b870 <_PyRuntime+283024>, callable=0x7fffe97f2200, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_call.h:168
#23 PyObject_Vectorcall (callable=0x7fffe97f2200, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/call.c:327
#24 0x00007ffff7b4f995 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/generated_cases.c.h:813
#25 0x00007ffff7c55d4d in pymain_run_module (modname=modname@entry=0x7ffff7e02e90 L"_pyrepl", set_argv0=set_argv0@entry=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:349
#26 0x00007ffff7a547b5 in pymain_run_stdin (config=0x7ffff7f0df68 <_PyRuntime+96392>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:574
#27 pymain_run_python (exitcode=0x7fffffffe81c) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:699
#28 Py_RunMain () at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:775
#29 0x00007ffff7c0b31c in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:829
#30 0x00007ffff780e0c8 in __libc_start_call_main (main=main@entry=0x555555555160 <main>, argc=argc@entry=1, argv=argv@entry=0x7fffffffea88) at ../sysdeps/nptl/libc_start_call_main.h:58
#31 0x00007ffff780e18b in __libc_start_main_impl (main=0x555555555160 <main>, argc=1, argv=0x7fffffffea88, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffea78) at ../csu/libc-start.c:360
#32 0x0000555555555095 in _start ()

Comment 7 Adam Williamson 2024-12-05 20:16:25 UTC
Looks like this also affects the F41 update - https://bodhi.fedoraproject.org/updates/FEDORA-2024-3c18fe0d93 . It probably also technically affects the F40 update, but as 3.13 isn't the system Python there it's not really a practical problem.

Comment 8 Miro Hrončok 2024-12-06 10:13:13 UTC
I would like to get python3-debug on that iso. Adam told me to edit https://github.com/weldr/lorax/blob/master/share/templates.d/99-generic/runtime-install.tmpl and "run lorax" but I have no idea how.

Comment 9 Miro Hrončok 2024-12-06 11:03:11 UTC
(In reply to Miro Hrončok from comment #1)
> Whoever ends up debugging this: there is a download link at
> https://openqa.fedoraproject.org/tests/3070905#downloads for
> https://openqa.fedoraproject.org/tests/3070905/asset/iso/03070708-FEDORA-
> 2024-3f975b9c0e-netinst-x86_64.iso

The link appears to have expired. I have that file.

I would upload it to fedorapeople.org but I don't have enough space.

Comment 11 Miro Hrončok 2024-12-06 12:09:18 UTC
Side note: Running `wget` (no arguments necessary) on that machine also results in a Segmentation fault

Comment 12 Miro Hrončok 2024-12-06 12:24:11 UTC
The good point is, when I mount that iso, and mount install.img from it and then purge /var/lib/mock/fedora-rawhide-x86_64/root and cp -a the contents of install.img to it, I can reproduce the segfault in mock.

Comment 13 Miro Hrončok 2024-12-06 12:30:04 UTC
Program received signal SIGSEGV, Segmentation fault.
Iterator_Sl_libdnf_PreserveOrderMap_Sl_std_string_Sc_std_string_Sg__Sg__next (self=0x5555555f80b0)
    at /usr/src/debug/libdnf-0.73.4-1.fc42.x86_64/build-py3/bindings/python/CMakeFiles/_common_types.dir/common_typesPYTHON_wrap.cxx:6053
6053                return (self->cur++)->first;
(gdb) bt
#0  Iterator_Sl_libdnf_PreserveOrderMap_Sl_std_string_Sc_std_string_Sg__Sg__next (self=0x5555555f80b0)
    at /usr/src/debug/libdnf-0.73.4-1.fc42.x86_64/build-py3/bindings/python/CMakeFiles/_common_types.dir/common_typesPYTHON_wrap.cxx:6053
#1  _wrap_PreserveOrderMapStringStringIterator___next__ (self=<optimized out>, args=<optimized out>)
    at /usr/src/debug/libdnf-0.73.4-1.fc42.x86_64/build-py3/bindings/python/CMakeFiles/_common_types.dir/common_typesPYTHON_wrap.cxx:16161
#2  0x00007ffff776632c in cfunction_vectorcall_O (func=0x7fffe8b079b0, args=0x7ffff7e49178, nargsf=9223372036854775809, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/methodobject.c:512
#3  0x00007ffff76ea901 in _PyObject_VectorcallTstate (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, callable=0x7fffe8b079b0, args=0x7ffff7e49178, nargsf=9223372036854775809, kwnames=0x0)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_call.h:168
#4  0x00007ffff76eb77c in PyObject_Vectorcall (callable=0x7fffe8b079b0, args=0x7ffff7e49178, nargsf=9223372036854775809, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/call.c:327
#5  0x00007ffff78a7480 in _PyEval_EvalFrameDefault (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, frame=0x7ffff7e49118, throwflag=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/generated_cases.c.h:813
#6  0x00007ffff78a1107 in _PyEval_EvalFrame (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, frame=0x7ffff7e49118, throwflag=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#7  0x00007ffff78c5c35 in _PyEval_Vector (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, func=0x7fffe8b38950, locals=0x0, args=0x7fffffffbff0, argcount=1, kwnames=0x0)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:1811
#8  0x00007ffff76ebb7c in _PyFunction_Vectorcall (func=0x7fffe8b38950, stack=0x7fffffffbff0, nargsf=1, kwnames=0x0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/call.c:413
#9  0x00007ffff77aab70 in _PyObject_VectorcallTstate (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, callable=0x7fffe8b38950, args=0x7fffffffbff0, nargsf=1, kwnames=0x0)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_call.h:168
#10 0x00007ffff77b1b93 in vectorcall_unbound (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, unbound=1, func=0x7fffe8b38950, args=0x7fffffffbff0, nargs=1)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:2566
#11 0x00007ffff77b1c86 in vectorcall_method (name=0x7ffff7d80440 <_PyRuntime+57952>, args=0x7fffffffbff0, nargs=1) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:2597
#12 0x00007ffff77c6883 in slot_tp_iternext (self=0x7fffe929e160) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Objects/typeobject.c:9719
#13 0x00007ffff78b13ce in _PyEval_EvalFrameDefault (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, frame=0x7ffff7e49080, throwflag=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/generated_cases.c.h:2786
#14 0x00007ffff78a1107 in _PyEval_EvalFrame (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, frame=0x7ffff7e49020, throwflag=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Include/internal/pycore_ceval.h:119
#15 0x00007ffff78c5c35 in _PyEval_Vector (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, func=0x7fffe93dbe90, locals=0x7fffe93785f0, args=0x0, argcount=0, kwnames=0x0)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:1811
#16 0x00007ffff78a2d76 in PyEval_EvalCode (co=0x7ffff738de70, globals=0x7fffe93785f0, locals=0x7fffe93785f0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/ceval.c:601
#17 0x00007ffff79d2652 in run_eval_code_obj (tstate=0x7ffff7dbb200 <_PyRuntime+299040>, co=0x7ffff738de70, globals=0x7fffe93785f0, locals=0x7fffe93785f0)
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/pythonrun.c:1337
#18 0x00007ffff79d2a22 in run_mod (mod=0x555555613f28, filename=0x7fffe9377a60, globals=0x7fffe93785f0, locals=0x7fffe93785f0, flags=0x7fffffffe010, arena=0x7fffe9378e80, interactive_src=0x7ffff735f7f0, 
    generate_new_source=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/pythonrun.c:1422
#19 0x00007ffff79d22bb in _PyRun_StringFlagsWithName (str=0x7ffff73a3760 "import libdnf; parser = libdnf.conf.ConfigParser(); parser.read(\"conf\"); parser.options(\"main\")\n", name=0x7fffe9377a60, start=257, 
    globals=0x7fffe93785f0, locals=0x7fffe93785f0, flags=0x7fffffffe010, generate_new_source=0) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/pythonrun.c:1221
#20 0x00007ffff79d0911 in _PyRun_SimpleStringFlagsWithName (command=0x7ffff73a3760 "import libdnf; parser = libdnf.conf.ConfigParser(); parser.read(\"conf\"); parser.options(\"main\")\n", name=0x7ffff7af6c4e "<string>", 
    flags=0x7fffffffe010) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Python/pythonrun.c:547
#21 0x00007ffff7a0a58f in pymain_run_command (command=0x55555555b520 L"import libdnf; parser = libdnf.conf.ConfigParser(); parser.read(\"conf\"); parser.options(\"main\")\n")
    at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:253
#22 0x00007ffff7a0b6c7 in pymain_run_python (exitcode=0x7fffffffe0c4) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:687
#23 0x00007ffff7a0b888 in Py_RunMain () at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:775
#24 0x00007ffff7a0b95e in pymain_main (args=0x7fffffffe140) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:805
#25 0x00007ffff7a0ba26 in Py_BytesMain (argc=3, argv=0x7fffffffe2b8) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Modules/main.c:829
#26 0x000055555555517d in main (argc=3, argv=0x7fffffffe2b8) at /usr/src/debug/python3.13-3.13.1-1.fc42.x86_64/Programs/python.c:15

Comment 14 Miro Hrončok 2024-12-06 12:56:29 UTC
When I then replace the content of python3-libdnf with the rpm-installed one, the segfault is gone.

The difference is:

<mock-chroot> sh-5.2# rpm --verify python3-libdnf
..5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/__init__.cpython-313.opt-1.pyc
..5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/__init__.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/common_types.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/common_types.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/conf.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/conf.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/error.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/error.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/module.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/module.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/repo.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/repo.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/transaction.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/transaction.cpython-313.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/utils.cpython-313.opt-1.pyc
S.5....T.    /usr/lib64/python3.13/site-packages/libdnf/__pycache__/utils.cpython-313.pyc


I narrowed it down to /usr/lib64/python3.13/site-packages/libdnf/__pycache__/conf.cpython-313.pyc. When I rpm-install python3-libdnf and I replace just conf.cpython-313.pyc with he one form the image, I get the crash.

Comment 15 Miro Hrončok 2024-12-06 13:08:33 UTC
$ mock -r fedora-rawhide-x86_64 init
...
$ mock -r fedora-rawhide-x86_64 install https://kojipkgs.fedoraproject.org//packages/python3.13/3.13.1/1.fc42/x86_64/python3{,-libs}-3.13.1-1.fc42.x86_64.rpm python3-libdnf
...

<mock-chroot> sh-5.2# python3 -c 'import libdnf; parser = libdnf.conf.ConfigParser(); parser.read("conf"); parser.options("main")'
<mock-chroot> sh-5.2# rm /usr/lib64/python3.13/site-packages/libdnf/__pycache__/conf.cpython-313.pyc 
<mock-chroot> sh-5.2# python3 -c 'import libdnf; parser = libdnf.conf.ConfigParser(); parser.read("conf"); parser.options("main")'
Segmentation fault (core dumped)


Seems like the pyc file as generated on 3.13.0 prevents the crash. But if the file is gone and the bytecode is generated on 3.13.1, it crashes.

Comment 16 Miro Hrončok 2024-12-06 13:15:37 UTC
The segfault happens with Python 3.13.0 as well, if I use the .pyc file generated on 3.13.1.

Remove the .pyc file again -> no more crash when it is generated on 3.13.0.

Comment 17 Miro Hrončok 2024-12-06 13:53:16 UTC
For the record, I did this first:

  <mock-chroot> sh-5.2# echo '[main]' > conf

Comment 18 Miro Hrončok 2024-12-06 14:50:33 UTC
Considering this libdnf code:

=================================================================
def ConfigParser__options(self, section):
    if not self.hasSection(section):
        raise KeyError("No section: '%s'" % section)
    sectObj = self.getData()[section]
    return [item for item in sectObj if not item.startswith('#')]
=================================================================

And this:

>>> import dis
>>> dis.dis(ConfigParser__options.__code__.co_code)


I get on Python 3.13.0:

          RESUME                   0
          LOAD_FAST                0
          LOAD_ATTR                1
          LOAD_FAST                1
          CALL                     1
          TO_BOOL
          POP_JUMP_IF_TRUE        14 (to L1)
          LOAD_GLOBAL              3
          LOAD_CONST               1
          LOAD_FAST                1
          BINARY_OP                6 (%)
          CALL                     1
          RAISE_VARARGS            1
  L1:     LOAD_FAST                0
          LOAD_ATTR                5
          CALL                     0
          LOAD_FAST                1
          BINARY_SUBSCR
          STORE_FAST               2
          LOAD_FAST                2
          GET_ITER
          LOAD_FAST_AND_CLEAR      3
          SWAP                     2
          BUILD_LIST               0
          SWAP                     2
  L2:     FOR_ITER                28 (to L4)
          STORE_FAST_LOAD_FAST    51 (, )
          LOAD_ATTR                7
          LOAD_CONST               2
          CALL                     1
          TO_BOOL
          POP_JUMP_IF_FALSE        2 (to L3)
          JUMP_BACKWARD           26 (to L2)
  L3:     LOAD_FAST                3
          LIST_APPEND              2
          JUMP_BACKWARD           30 (to L2)
  L4:     END_FOR
          POP_TOP
          SWAP                     2
          STORE_FAST               3
          RETURN_VALUE
          SWAP                     2
          POP_TOP
          SWAP                     2
          STORE_FAST               3
          RERAISE                  0

And on 3.13.1:

          RESUME                   0
          LOAD_FAST                0
          LOAD_ATTR                1
          LOAD_FAST                1
          CALL                     1
          TO_BOOL
          POP_JUMP_IF_TRUE        14 (to L1)
          LOAD_GLOBAL              3
          LOAD_CONST               1
          LOAD_FAST                1
          BINARY_OP                6 (%)
          CALL                     1
          RAISE_VARARGS            1
  L1:     LOAD_FAST                0
          LOAD_ATTR                5
          CALL                     0
          LOAD_FAST                1
          BINARY_SUBSCR
          STORE_FAST               2
          LOAD_FAST                2
          GET_ITER
          LOAD_FAST_AND_CLEAR      3
          SWAP                     2
          BUILD_LIST               0
          SWAP                     2
          GET_ITER
  L2:     FOR_ITER                28 (to L4)
          STORE_FAST_LOAD_FAST    51 (, )
          LOAD_ATTR                7
          LOAD_CONST               2
          CALL                     1
          TO_BOOL
          POP_JUMP_IF_FALSE        2 (to L3)
          JUMP_BACKWARD           26 (to L2)
  L3:     LOAD_FAST                3
          LIST_APPEND              2
          JUMP_BACKWARD           30 (to L2)
  L4:     END_FOR
          POP_TOP
          SWAP                     2
          STORE_FAST               3
          RETURN_VALUE
          SWAP                     2
          POP_TOP
          SWAP                     2
          STORE_FAST               3
          RERAISE                  0


The diff is:

@@ -23,6 +23,7 @@
           SWAP                     2
           BUILD_LIST               0
           SWAP                     2
+          GET_ITER
   L2:     FOR_ITER                28 (to L4)
           STORE_FAST_LOAD_FAST    51 (, )
           LOAD_ATTR                7


The Segfault happens in Iterator_Sl_libdnf_PreserveOrderMap_Sl_std_string_Sc_std_string_Sg__Sg__next. Which is likely in this instruction.

I'll bisect this.

Comment 19 Miro Hrončok 2024-12-06 15:01:34 UTC
dis_options.py:

  def ConfigParser__options(self, section):
      if not self.hasSection(section):
          raise KeyError("No section: '%s'" % section)
      sectObj = self.getData()[section]
      return [item for item in sectObj if not item.startswith('#')]
  
  import dis
  dis.dis(ConfigParser__options.__code__.co_code)

git bisect run:

  rm -f current.dis
  ./configure --config-cache --without-ensurepip && make -j6 || exit 125
  ./python dis_options.py > current.dis || exit 125
  diff -u 3.13.0.dis current.dis


commit https://github.com/python/cpython/commit/bcc7227ef7fd21aa48c8f1c57922e8beced5737c
Author: Jelle Zijlstra <jelle.zijlstra>
Date:   Wed Oct 23 06:45:28 2024 -0700

    [3.13] gh-125038: Fix crash after genexpr.gi_frame.f_locals manipulations (GH-125178) (#125846)
    
    (cherry picked from commit https://github.com/python/cpython/commit/079875e39589eb0628b5883f7ffa387e7476ec06)
    
    Co-authored-by: Mikhail Efimov <efimov.mikhail>

 Lib/test/test_dis.py                               |  1 +
 Lib/test/test_generators.py                        | 73 ++++++++++++++++++++++
 .../2024-10-09-13-53-50.gh-issue-125038.ffSLCz.rst |  2 +
 Python/compile.c                                   |  1 +
 4 files changed, 77 insertions(+)
 create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2024-10-09-13-53-50.gh-issue-125038.ffSLCz.rst
bisect found first bad commit



The change seems intended, as the new instruction was added to test_dis.py

Comment 20 Miro Hrončok 2024-12-06 15:12:58 UTC
To reproduce this crash of python3-libdnf with Python 3.13.0, you can do this:

$ rpm -q python3 python3-libdnf
python3-3.13.0-1.fc42.x86_64
python3-libdnf-0.73.4-1.fc42.x86_64

$ echo '[main]' > conf

$ python3
Python 3.13.0 (main, Oct  8 2024, 00:00:00) [GCC 14.2.1 20240912 (Red Hat 14.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import libdnf
>>> parser = libdnf.conf.ConfigParser()
>>> parser.read("conf")
['conf']
>>> parser.hasSection("main")
True
>>> sectObj = parser.getData()["main"]
>>> [item for item in sectObj]  # works
[]
>>> [item for item in iter(sectObj)]  # crashes
Segmentation fault (core dumped)


This is an existing bug in python3-libdnf (or SWIG) that Python 3.13.1 only exposed.

As such, I marked this as blocking bz2321657 (medium severity CVE, fixed in Python 3.13.1).

Comment 21 Miro Hrončok 2024-12-06 15:57:33 UTC
The problem appears to be:

When an iterator is created from an iterator, everything behaves as expected:

>>> it1 = iter(sectObj)
>>> it2 = iter(it1)
>>> next(it1)
...
StopIteration: End of iterator
>>> next(it2)
...
StopIteration: End of iterator
>>> next(it1)
...
StopIteration: End of iterator

But when the first one is deleted, the other one segfaults:

>>> del it1
>>> next(it2)
Segmentation fault (core dumped)

And calling iter(iter(...)) discards the inner iterator.

Comment 22 Miro Hrončok 2024-12-06 17:01:06 UTC
An iterator should return self on __iter__.

So that this works:

  >>> it1 = iter(sectObj)
  >>> it2 = iter(it1)
  >>> it1 is it2
  True

Doing it that way ensures this iterator is well-behaved. It also prevents the crash.


I don't know much about SWIG. Currently, this iterator does not return self on __iter__, it returns this:

class PreserveOrderMapStringStringIterator(object):
    ...
    def __iter__(self):
        return _common_types.PreserveOrderMapStringStringIterator___iter__(self)

And that returns a new Python object.


I was able to fix this by:

diff --git a/bindings/swig/common_types.i b/bindings/swig/common_types.i
index c9ae798a..934be564 100644
--- a/bindings/swig/common_types.i
+++ b/bindings/swig/common_types.i
@@ -63,10 +63,6 @@ template<class T>
 class Iterator {
 public:
     Iterator(typename T::iterator _cur, typename T::iterator _end) : cur(_cur), end(_end) {}
-    Iterator* __iter__()
-    {
-      return this;
-    }
 
     typename T::iterator cur;
     typename T::iterator end;
@@ -165,3 +161,10 @@ EXTEND_TEMPLATE_PreserveOrderMapIterator(std::string, std::string)
 EXTEND_TEMPLATE_PreserveOrderMapIterator(std::string, libdnf::PreserveOrderMap<std::string, std::string>)
 
 %exception;  // beware this resets all exception handlers if you import this file after defining any
+
+%pythoncode %{
+def PreserveOrderMapStringStringIterator___iter__(self):
+    return self
+PreserveOrderMapStringStringIterator.__iter__ = PreserveOrderMapStringStringIterator___iter__
+del PreserveOrderMapStringStringIterator___iter__
+%}
\ No newline at end of file
diff --git a/bindings/swig/conf.i b/bindings/swig/conf.i
index b6a0ce88..2f77003f 100644
--- a/bindings/swig/conf.i
+++ b/bindings/swig/conf.i
@@ -71,10 +71,6 @@ template<class T>
 class Iterator {
 public:
     Iterator(typename T::iterator _cur, typename T::iterator _end) : cur(_cur), end(_end) {}
-    Iterator* __iter__()
-    {
-        return this;
-    }
 
     typename T::iterator cur;
     typename T::iterator end;


But perhaps there is a better way to actually return self in SWIG?

Comment 23 Adam Williamson 2024-12-06 19:09:58 UTC
Thanks a lot for the exhaustive investigation, Miro!

Comment 24 Miro Hrončok 2024-12-09 11:05:42 UTC
This now also blocks a fix for a high severity CVE CVE-2024-12254, bz2330927.

Please a ship a fix for this today.

Comment 25 Miro Hrončok 2024-12-09 13:01:45 UTC
Also reported to SWIG: https://github.com/swig/swig/issues/3086

Comment 26 Fedora Update System 2024-12-10 13:33:42 UTC
FEDORA-2024-1d97254ea9 (libdnf-0.73.4-2.fc42) has been submitted as an update to Fedora 42.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-1d97254ea9

Comment 27 Fedora Update System 2024-12-10 13:46:43 UTC
FEDORA-2024-3c18fe0d93 (libdnf-0.73.4-2.fc41, python3.13-3.13.1-2.fc41, and 1 more) has been submitted as an update to Fedora 41.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-3c18fe0d93

Comment 28 Fedora Update System 2024-12-10 18:19:45 UTC
FEDORA-2024-1d97254ea9 (libdnf-0.73.4-2.fc42) has been pushed to the Fedora 42 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 29 Fedora Update System 2024-12-11 01:41:41 UTC
FEDORA-2024-3c18fe0d93 has been pushed to the Fedora 41 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-3c18fe0d93`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-3c18fe0d93

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 30 Fedora Update System 2024-12-12 02:40:06 UTC
FEDORA-2024-3c18fe0d93 has been pushed to the Fedora 41 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-3c18fe0d93`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-3c18fe0d93

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 31 Fedora Update System 2024-12-22 02:00:59 UTC
FEDORA-2024-3c18fe0d93 (libcomps-0.1.21-4.fc41, libdnf-0.73.4-2.fc41, and 2 more) has been pushed to the Fedora 41 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.