Open mykaul opened 6 years ago
strace the command:
write(1, "writing delta rpm...\n", 21writing delta rpm...
) = 21
brk(NULL) = 0x558564232000
brk(0x55856425f000) = 0x55856425f000
brk(NULL) = 0x55856425f000
brk(0x558564294000) = 0x558564294000
brk(NULL) = 0x558564294000
brk(0x5585642bc000) = 0x5585642bc000
brk(NULL) = 0x5585642bc000
brk(0x5585642e9000) = 0x5585642e9000
brk(NULL) = 0x5585642e9000
brk(0x558564357000) = 0x558564357000
brk(NULL) = 0x558564357000
brk(0x5585643d8000) = 0x5585643d8000
brk(NULL) = 0x5585643d8000
brk(0x55856447e000) = 0x55856447e000
openat(AT_FDCWD, "new", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
write(3, "drpmDLT3\0\0\0*ovirt-engine-applian"..., 58) = 58
write(3, "BZh91AY&SY^\253\266\301\0\"\207\177\377\377\377\377\377\377\377\377\377\377\377\377\377\377"..., 1171766) = 1171766
write(2, "payload open failed\n", 20payload open failed
) = 20
The error seems to come from writedeltarpm.c line 173, the cfile_open of the target payload seems to fail for some reason (out of memory?).
(Note that you can limit memory consumption with makedeltarpm's -m <mbytes>
option.)
I know that it'll probably run for quite some time, but could you please run the makedeltarpm command in valgrind to get some hint to why it fails?
Hours of run, at the end...
==29467== Warning: set address range perms: large range [0xc1d38028, 0xf5cc8058) (noaccess)
==29467== Warning: set address range perms: large range [0xf5cc9028, 0x129c69058) (noaccess)
==29467== Warning: set address range perms: large range [0x59e46028, 0x8ddf6058) (noaccess)
==29467== Warning: set address range perms: large range [0x8ddf7028, 0xc1db7058) (noaccess)
==29467== Warning: set address range perms: large range [0xc1db8028, 0xf5d88058) (noaccess)
==29467== Warning: set address range perms: large range [0xf5d89028, 0x129d69058) (noaccess)
==29467== Warning: set address range perms: large range [0x59e46028, 0x8de36058) (noaccess)
==29467== Warning: set address range perms: large range [0xc1e38040, 0x10fd7fee4) (defined)
==29467== Warning: set address range perms: large range [0xc1e38028, 0x10fd7fefc) (noaccess)
payload open failed
==29467==
==29467== HEAP SUMMARY:
==29467== in use at exit: 1,759,136,936 bytes in 14 blocks
==29467== total heap usage: 39,373 allocs, 39,359 frees, 11,749,755,114,633 bytes allocated
==29467==
==29467== LEAK SUMMARY:
==29467== definitely lost: 0 bytes in 0 blocks
==29467== indirectly lost: 0 bytes in 0 blocks
==29467== possibly lost: 0 bytes in 0 blocks
==29467== still reachable: 1,759,136,936 bytes in 14 blocks
==29467== suppressed: 0 bytes in 0 blocks
==29467== Rerun with --leak-check=full to see details of leaked memory
==29467==
==29467== For counts of detected and suppressed errors, rerun with: -v
==29467== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
[back from vacation]
Ok, I think I need your two rpms to reproduce it locally. Can you please upload them to some place where I can access them?
@mlschroe - thanks. Can you take two big RPMs from https://resources.ovirt.org/pub/ovirt-4.2/rpm/el7/noarch/ ? The ovirt-engine-appliance* ones.
Ok, downloaded them and ran makedeltarpm:
$ makedeltarpm -v ovirt-engine-appliance-4.2-20180731.1.el7.noarch.rpm ovirt-engine-appliance-4.2-20180903.1.el7.noarch.rpm ovirt.drpm
reading new rpm...
reading old rpm...
files used: 3/3 = 100.0%
files skipped: 0/3 = 0.0%
creating diff...
writing delta rpm...
$
So it worked on my SUSE SLE-15 host. I'll try to setup a FC28 chroot tomorrow.
Moin ! I faced the same issue but have been able to fix it using the switch "-z gzip".
[root@xxxx tmp]# makedeltarpm -r old.rpm new.rpm delta.rpm -v reading old rpm... reading new rpm... creating diff... writing delta rpm... payload open failed [root@xxxx tmp]# makedeltarpm -r old.rpm new.rpm delta.rpm -z gzip -v reading old rpm... reading new rpm... creating diff... writing delta rpm...
Linux xxxxx 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
deltarpm-3.5-0.5.20090913git.el6.x86_64
EDIT: Indeed it was creating the deltarpm as desired. But I intended to use it with createrepo and yum-presto and there it fails again. I suspect that the RPMs that we are building are compressed using "gzip" rather than "gzip --rsyncable". Somehow deltarpm ignores the fact that the compression mode is a little different. !?
Trying to makedeltarpm between two fairly (well, very) large RPMs fails on the 'writing delta rpm' phase with the cryptic 'payload open failed' error.
I'm running on FC28, python2-deltarpm-3.6-25.
https://github.com/rpm-software-management/deltarpm/blob/619eaf318b3420056c14933bd513201bfb8af494/makedeltarpm.c#L1080