[Yum] 2.4.2 on HP-UX and IRIX
Albert Chin
yum at mlists.thewrittenword.com
Sun Jan 15 19:00:44 UTC 2006
On Sun, Jan 15, 2006 at 01:42:39PM -0500, seth vidal wrote:
>
> > I presume self.rpmdb is what you're talking about. Because it causes
> > the __db.### Berkeley DB environment files to be opened, no further
> > instances can be opened and mmap()'ed. However, populateTs() in
> > yum/depsolve.py does so, causing the problem.
> >
> > I suppose one option is to stuff self.rpmdb.[member] with any info
> > needed by future uses of self.rpmdb and then close the DB after
> > self.rpmdb.addDB().
> >
>
> Maybe I'm missing it - where does populateTs() reopen the rpmdb?
The call to self.ts.addInstall():
self.ts.addInstall(hdr, (hdr, rpmfile), txmbr.ts_state)
I don't know if it's easy to see this without printf()'s in the
Berkeley DB source code. Running strace on the process should also
show multiple opens of db.###. You'll see several opens followed by
several mmap() calls. Then, you see them again after the call above.
In between, the initial mmap()'s have not been munmap()'ed because
self.read_ts.ts and self.read_ts are still active. They become
inactive in closeRpmDB() but that doesn't occur until yum ends.
> Are you talking about the rpmdb or the transaction set?
Well, in this case, both open the __db.### environment files.
> And what version of rpm are you using this on?
rpm-4.2.4. I don't think the version matters though.
--
albert chin (china at thewrittenword.com)
More information about the Yum
mailing list