Description of problem: When run following code I get segmentation fault when one of repomd_fn, primary_fn, filelists_fn files does not actually exist on the filesystem: from __future__ import print_function from __future__ import unicode_literals from __future__ import division from __future__ import absolute_import import os import re import rpm import time import glob import hawkey import shutil import librepo import ConfigParser sack = hawkey.Sack() path = "/mnt/cache/%s" repo1 = hawkey.Repo("Fedora") repo1.repomd_fn = path % "fedora/repodata/repomd.xml" repo1.primary_fn = path % "fedora/repodata/d7777ea6ec66e1c86c3fe1900adf5bf8d877fb77dd06e439bd76bbbec4e82094-primary.xml.gz" repo1.filelists_fn = path % "fedora/repodata/ef9c432f9a354c202cadbd415248891bfd30addfd2bda52be2391156e32c5392-filelists.xml.gz" repo2 = hawkey.Repo("Updates") repo2.repomd_fn = path % "updates/repodata/repomd.xml" repo2.primary_fn = path % "updates/repodata/41bf2a05469f49f390c5dddd4712814b0a3cfff22b2bd9ea8ebe4490a6769e39-primary.xml.gz" repo2.filelists_fn = path % "updates/repodata/ed23cac14f1f9d37bf900fa87596c8fcad8c76557b85d5ee203a57fdbb239577-filelists.xml.gz" sack.load_yum_repo(repo1, load_filelists=True) len(sack) sack.load_yum_repo(repo2, load_filelists=True) len(sack) Version-Release number of selected component (if applicable): hawkey-0.4.11-1.fc20.x86_64 python-hawkey-0.4.11-1.fc20.x86_64 python-2.7.5-11.fc20.x86_64 How reproducible: Everytime, when target file does not exist Steps to Reproduce: 1. Run above code. 2. Make sure that files transferred to Repo object dont exist on filesystem. 3. Segfault happens when invoking sack.load_yum_repo() on repo that has missing files. Actual results: Segmentation fault Expected results: Working sack Additional info:
Jakub, would you be able to upload the coredump somewhere?
Created attachment 872793 [details] Requested core dump... For simplicity and core size reduction, was generated from code below: #!/usr/bin/python -tt import hawkey sack = hawkey.Sack() path = "/mnt/cache/%s" repo2 = hawkey.Repo("Updates") repo2.repomd_fn = path % "updates/repodata/repomd.xml" repo2.primary_fn = path % "updates/repodata/41bf2a05469f49f390c5dddd4712814b0a3cfff22b2bd9ea8ebe4490a6769e39-primary.xml.gz" repo2.filelists_fn = path % "updates/repodata/ed23cac14f1f9d37bf900fa87596c8fcad8c76557b85d5ee203a57fdbb239577-filelists.xml.gz" sack.load_yum_repo(repo2, load_filelists=True)
Thank you! We will take a look.
Moving to Jan.
I cannot get segfault even in hawkey-0.4.11-1. It throws "IOError: Can not read repomd file" instead. IMO it's expected result contrary to yours (Expected results: Working sack).