Although we've not changed the underlying DB version in RPM 5, since
recently with 5.1.9 I see at the end of the OpenPKG "bootstrap" package
upgrade:
| rpmdb: PANIC: fatal region error detected; run recovery
| error: db4 error(-30974) from db->cursor: DB_RUNRECOVERY: Fatal error, run
database recovery
| [...]
| rpmdb: File handles still open at environment close
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/__db.001
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Packages
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Basenames
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Name
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Sha1header
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Triggername
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Group
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Providename
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Requirename
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Dirnames
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Requireversion
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Provideversion
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Installtid
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Sigmd5
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Filedigests
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Packagecolor
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Nvra
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/Filepaths
| rpmdb: Open file handle: /v/gmbh/sw/RPM/DB/BuildEnvironment
| rpmdb: PANIC: fatal region error detected; run recovery
| error: db4 error(-30974) from dbenv->close: DB_RUNRECOVERY: Fatal error, run
database recovery
The reason is that because in %pre and %post a few "rpm -q" operations
are performed. Those seem to be still work fine as before, but at the
end of the outer "rpm -U" operation RPM seems to detect the above
problem now. Nothing seems to be actually broken afterwards, but the
above errors make me feel bad and also confuse users.
Two questions come up for me:
1. Why were no such errors in the past with 5.0.x and <= 5.1.[7-9]
(approximately)?
2. What can we do to workaround this problem? Perhaps run
the "rpm -q" operations in a special RPMDB read-only mode or
something like this? Perhaps --define '__dbi_private yes'?
Ralf S. Engelschall
[email protected]
www.engelschall.com
______________________________________________________________________
RPM Package Manager http://rpm5.org
Developer Communication List [email protected]