What | Removed | Added |
---|---|---|
CC | bzeller@suse.com, ma@suse.com | |
Flags | needinfo?(ma@suse.com), needinfo?(bzeller@suse.com) |
That this fails in TW now too made the list of changes much shorter, so I could do some tests. I found that this is caused by 99903f03c551288e6bb522522b547f1fc8e4ee32 in yast-packager, "Move the libzypp cache (bsc#1182928)". It does the following shortly before starting the installation: # copy the credential files (libzypp loads them from target) # and the repository cache to the target system Pkg.SourceCacheCopyTo(Installation.destdir) # symlink the cache from inst-sys to save same space (RAM!) cache_path = Pkg.ZConfig()["repo_cache_path"] || "/var/cache/zypp" log.info("Zypp cache size: #{`du -h -s #{cache_path.shellescape}`}") ::FileUtils.rm_rf(cache_path) File.symlink(File.join(Installation.destdir, cache_path), cache_path) After commenting out the "Pkg.SourceCacheCopyTo(Installation.destdir)" call, the crash is gone. What this does is effectively: cp -R /var/cache/zypp /mnt/var/cache/ rm -rf /var/cache/zypp ln -sf /mnt/var/cache/zypp /var/cache/zypp @zypp: Can you explain this? Is it a bug in YaST, libzypp or even libsolv? My theory is that it's very risky to copy cache files which are potentially in use by the current process. Buffers might not be flushed to disk yet, so this copies potentially incomplete files over and when they are reopened, the content is different. The crash looks very much like corruption of the repo data.