Bug 1296212 - rpm db warnings going to stdout, breaking some install scripts
Summary: rpm db warnings going to stdout, breaking some install scripts
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: rpm
Version: 6.7
Hardware: All
OS: All
unspecified
low
Target Milestone: rc
: ---
Assignee: Packaging Maintenance Team
QA Contact: Stefan Dordevic
URL:
Whiteboard:
Depends On:
Blocks: 1297793
TreeView+ depends on / blocked
 
Reported: 2016-01-06 15:43 UTC by David Zambonini
Modified: 2016-05-11 00:54 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 1297793 (view as bug list)
Environment:
Last Closed: 2016-05-11 00:54:17 UTC
Target Upstream Version:


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


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2016:0936 0 normal SHIPPED_LIVE rpm bug fix and enhancement update 2016-05-10 22:54:44 UTC

Description David Zambonini 2016-01-06 15:43:59 UTC
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 13:25:31 UTC
In upstream fixed as 243fadeaecdd5b1231091ef5f15b58fd7959b0e7.

Comment 10 errata-xmlrpc 2016-05-11 00:54:17 UTC
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.