Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"payload open failed" - cryptic failure #3

Open
mykaul opened this issue Aug 7, 2018 · 7 comments
Open

"payload open failed" - cryptic failure #3

mykaul opened this issue Aug 7, 2018 · 7 comments

Comments

@mykaul
Copy link

mykaul commented Aug 7, 2018

Trying to makedeltarpm between two fairly (well, very) large RPMs fails on the 'writing delta rpm' phase with the cryptic 'payload open failed' error.

  1. I'd be happy to know why (even with '-vv' unsure why)
  2. I think it'll be a good idea to improve the error message?

I'm running on FC28, python2-deltarpm-3.6-25.

fprintf(stderr, "payload open failed\n");

@mykaul
Copy link
Author

mykaul commented Aug 7, 2018

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

@mlschroe
Copy link
Contributor

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?

@mykaul
Copy link
Author

mykaul commented Aug 11, 2018

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)

@mlschroe
Copy link
Contributor

[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?

@mykaul
Copy link
Author

mykaul commented Sep 20, 2018

@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.

@mlschroe
Copy link
Contributor

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.

@ruedigerblock
Copy link

ruedigerblock commented Oct 17, 2018

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. !?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants