[Rpm-maint] [PATCH 4/5] Extend header size to 64MB due to file signatures

Lubos Kardos lkardos at redhat.com
Fri Apr 29 12:33:58 UTC 2016


Here is a backtrace for rpmfilesPopulate() called during the first phase:

    rpmfilesPopulate() at rpmfi.c:1427
    rpmfilesNew() at rpmfi.c:1585
    getFiles() at rpmte.c:110
    addTE() at rpmte.c:173
    rpmteNew() at rpmte.c:241
    addPackage() at depends.c:438
    rpmtsAddInstallElementat() depends.c:493
    rpmInstall() at rp minstall.c:583
    main() at rpmqv.c:295

Here is a backtrace for rpmfilesPopulate() called during the second phase:

    rpmfilesPopulate() at rpmfi.c:1427
    rpmfilesNew() at rpmfi.c:1585
    getFiles() at rpmte.c:110
    rpmteOpen() at rpmte.c:571
    rpmteProcess() at rpmte.c:755
    rpmtsProcess() at transaction.c:1362
    rpmtsRun() at transaction.c:1542
    rpmcliTransaction() at rpminstall.c:289
    rpmInstall() at rpminstall.c:617
    main() at rpmqv.c:295

One solution how to detect phase could be adding another argument to function
getFiles() and this argument will indicate if getFiles() was called from
addTE() i. e. the first phase or from rpmteOpen() i. e. the  second phase then
flags could be set according to this argument in function getFiles().

Lubos


----- Original Message -----
> From: "Stefan Berger" <stefanb at us.ibm.com>
> To: "Lubos Kardos" <lkardos at redhat.com>
> Cc: "Florian Festi" <ffesti at redhat.com>, rpm-maint at lists.rpm.org
> Sent: Friday, April 29, 2016 1:35:35 PM
> Subject: Re: [Rpm-maint] [PATCH 4/5] Extend header size to 64MB due to file signatures
> 
> Lubos Kardos <lkardos at redhat.com> wrote on 04/29/2016 06:40:16 AM:
> 
> > 
> > It is just a thought. Rpm transaction can be divided in two phases.
> > In the first phase in the beginning of transaction rpm loads all file
> infos to
> > perform transactions checks and then releases them. In the second phase
> rpm
> > reloads single file infos to install single packages in row. The memory
> peak
> > happens in the first phase when all file infos are loaded. These file
> infos
> > contain also file signatures but in the first phase they needn't to
> contain
> > them because the signature checking is performed only in the second
> phase.
> > 
> > So if the file signatures blow up the file infos so much so we need
> > to increase
> > maximum header size then maybe it would be nice not to load file
> signatures
> > into file infos during the first phase of transaction when the rpm
> memory peak
> > happens.
> 
> I agreed and it would be a separate patch.
> 
> I didn't look very deeply, but how does one detect the phases? I suppose
> the part
> to skip would be in lib/trpmfi.c::rpmfilePopulate where the flag
> RPMFI_NOFILESIGNATURES is
> checked. If that's the case, maybe the 1st phase could call this function
> with this
> flag always set?
> 
>     Stefan
> 
> > 
> > Lubos
> > 
> > ----- Original Message -----
> > > From: "Florian Festi" <ffesti at redhat.com>
> > > To: "Stefan Berger" <stefanb at us.ibm.com>
> > > Cc: rpm-maint at lists.rpm.org
> > > Sent: Friday, April 29, 2016 10:27:39 AM
> > > Subject: Re: [Rpm-maint] [PATCH 4/5] Extend header size to 64MB
> > due to file signatures
> > > 
> > > On 04/27/2016 09:47 PM, Stefan Berger wrote:
> > > > "Rpm-maint" <rpm-maint-bounces at lists.rpm.org> wrote on 04/27/2016
> > > > 05:50:54 AM:
> > > > 
> > > > 
> > > >>
> > > >> Well changing header size limit needs a bit more thought. The main
> > > >> problem is that packages with bigger header will look broken on
> older
> > > >> rpm versions and the usual way of dealing with this (adding
> rpmlib()
> > > >> Requires) won't work it needs reading the header.
> > > > 
> > > > These huge headers are only occurring in a few very large packages
> and
> > > > only if one applies the per-file signatures. So most users probably
> > > > won't notice.
> > > > 
> > > >>
> > > >> Also I wonder if we should increase the header size even more, to
> get
> > > >> rid of this topic for a longer time. I thought about 256MB which
> gives a
> > > >> 4 times increase over the 16MB. I am kinda tempted to go even
> further.
> > > >> Otoh the limit is there for a reason. And having rpm chew through
> one GB
> > > >> of broken data doesn't sound like a pleasant experience.
> > > > 
> > > > Anything >=16 MB works with signed files for all packages in Fedora
> 23.
> > > > Let me know if you want me to resubmit the patch with a higher
> limit.
> > > 
> > > Yes, please. 256MB is probably the way to go. Let's hope we don't
> reach
> > > that any time soon.
> > > 
> > > Florian
> > > 
> > > --
> > > 
> > > Red Hat GmbH, http://www.de.redhat.com/, Registered seat: Grasbrunn,
> > > Commercial register: Amtsgericht Muenchen, HRB 153243,
> > > Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,
> > > Michael O'Neill
> > > _______________________________________________
> > > Rpm-maint mailing list
> > > Rpm-maint at lists.rpm.org
> > > http://lists.rpm.org/mailman/listinfo/rpm-maint
> > > 
> > 
> 
> 
> 


More information about the Rpm-maint mailing list