pld rpm 5.4.17

Jakub Bogusz qboosh at pld-linux.org
Fri Feb 24 23:03:47 CET 2017


On Wed, Feb 22, 2017 at 10:02:17PM +0100, Jakub Bogusz wrote:
> On Tue, Feb 21, 2017 at 09:51:13PM +0100, Jakub Bogusz wrote:
> > On Tue, Jan 10, 2017 at 09:36:24PM +0200, Elan Ruusamäe wrote:
> > > not cool.
> > > 
> > > $ rpm -q rpm
> > > BDB0056 DB->cursor: DB_READ_COMMITTED, DB_READ_UNCOMMITTED and DB_RMW 
> > > require locking
> > > error: db3copen:db3.c:1470: db->cursor(22): Invalid argument
> > > BDB0056 DB->cursor: DB_READ_COMMITTED, DB_READ_UNCOMMITTED and DB_RMW 
> > > require locking
> > > error: db3copen:db3.c:1470: db->cursor(22): Invalid argument
> > > BDB0630 DB_THREAD mandates memory allocation flag on primary key DBT
> > > error: db3cpget:db3.c:1568: db->pget(22): Invalid argument
> > > error: error(22) getting keys from Nvra index
> > > error: error(1) getting records from Nvra index
> > > package rpm is not installed
> > > 
> > > luckily was able to downgrade.
> > 
> > Which db version was used?
> > Was that default system db (with headers in /usr/include)?
> > 
> > I experienced such behaviour when trying to upgrade rpm 5.4.15+db 6.1.19
> > to 5.4.17+db 6.1.29 (while the system db is 6.2.23, maybe some file
> > caught system db.h)
> 
> Update: still the same with uid>0 (no write permission to /var/lib/rpm).
> It seems that DB_READ_COMMITTED and DB_READ_UNCOMMITTED require +w,
> so they should be filtered out in unprivileged mode.

Issue explained:

DB_READ_COMMITTED and DB_READ_UNCOMMITTED are cursor/get/set/txn options.
DB_RDONLY and DB_READ_UNCOMMITTED are open options.

But... DB_READ_COMMITTED and DB_RDONLY have the same value!
So "read_committed" cannot be applied to dbi_oflags (should be in
eflags?) and applied to DB->cursor operations, like it's done since rpm
5.4.17 (leaving DB_READ_COMMITTED bit from oflags to cursor causes DB_RDONLY
bit to be passed as DB_READ_COMITTED, which conflicts with read-only database).


-- 
Jakub Bogusz    http://qboosh.pl/


More information about the pld-devel-en mailing list