Bug 1296212 - rpm db warnings going to stdout, breaking some install scripts
rpm db warnings going to stdout, breaking some install scripts
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: rpm (Show other bugs)
6.7
All All
unspecified Severity low
: rc
: ---
Assigned To: packaging-team-maint
Stefan Dordevic
:
Depends On:
Blocks: 1297793
  Show dependency treegraph
 
Reported: 2016-01-06 10:43 EST by David Zambonini
Modified: 2016-05-10 20:54 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1297793 (view as bug list)
Environment:
Last Closed: 2016-05-10 20:54:17 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
rpm db4 messages should go to stderr (563 bytes, patch)
2016-01-06 10:43 EST, David Zambonini
no flags Details | Diff

  None (edit)
Description David Zambonini 2016-01-06 10:43:59 EST
Created attachment 1112210 [details]
rpm db4 messages should go to stderr

Description of problem:

Some rpm pre/post scripts rely on a shell out to rpm to determine pre-existing installed package information/versioning. (e.g. `rpm -q --provides mysql-server 2> /dev/null`)

Unfortunately some non-fatal warnings can be output if, for example, a read lock on the rpmdb is held open at this time, leading to the warning picked up as the output and causing breakage:

Freeing read locks for locker 0x49e: 482061/47810768245328 
mysql-server-5.1.73-5.el6_6.x86_64

(both lines on stdout)

Putting aside the question of what is holding the read lock open for a second, this behaviour is obviously erroneous -- warnings/errors should be output to stderr, not stdout. 

How reproducible:

`rpm -q --provides mysql-server 2> /dev/null` 

While read lock held open on rpmdb. Cannot provide a reproducer for this as unfortunately is enivornment dependent.

Actual results:

Freeing read locks for locker 0x49e: 482061/47810768245328 
mysql-server-5.1.73-5.el6_6.x86_64

Expected results:

Freeing read locks for locker 0x49e: 482061/47810768245328 (on stderr)
mysql-server-5.1.73-5.el6_6.x86_64 (on stdout)

Additional info:

The behaviour is caused by db4, which if no msgfile is specified, defaults to stdout. There is a simple fix, however, which without modifying default db4 behaviour that merely involves rpm passing stderr as the msgfile at initialisation (patch supplied).
Comment 2 Ľuboš Kardoš 2016-01-12 08:25:31 EST
In upstream fixed as 243fadeaecdd5b1231091ef5f15b58fd7959b0e7.
Comment 10 errata-xmlrpc 2016-05-10 20:54:17 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-0936.html

Note You need to log in before you can comment on or make changes to this bug.