Bug 1466278

Summary: file descriptor leaks in fmt ?
Product: Red Hat Enterprise Linux 7 Reporter: Cedric Buissart <cbuissar>
Component: joseAssignee: Nathaniel McCallum <npmccallum>
Status: CLOSED ERRATA QA Contact: Jiri Jaburek <jjaburek>
Severity: low Docs Contact:
Priority: low    
Version: 7.4CC: dpal, jjaburek, npmccallum
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-04-10 14:41:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Cedric Buissart 2017-06-29 11:52:49 UTC
Description of problem:

Looking at the 2 fmt functions cmd_output() and cmd_foreach(), they don't seem to close their file descriptor, and references to these descriptors seem to be loss.

I am unsure if it is expected or not.


Version-Release number of selected component (if applicable): jose-8-1.el7.x86_64, but upstream doesn't seem to have a fix yet either.


How reproducible: 100%


Steps to Reproduce:

$ valgrind --track-fds=yes jose fmt -j- -O -o foo.file -o bar.file -f baz.txt -f qux.file <<< '{ "pin": "tang", "url": "http://localhost" }'
[...]
==26757== FILE DESCRIPTORS: 8 open at exit.
==26757== Open file descriptor 7: qux.file
==26757==    at 0x5D78790: __open_nocancel (syscall-template.S:81)
==26757==    by 0x5D08DDF: _IO_file_open (fileops.c:229)
==26757==    by 0x5D08DDF: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:339)
==26757==    by 0x5CFD4B3: __fopen_internal (iofopen.c:90)
==26757==    by 0x408D79: cmd_foreach (fmt.c:101)
==26757==    by 0x408D79: jcmd_fmt (fmt.c:665)
==26757==    by 0x402760: main (jose.c:500)
==26757== 
==26757== Open file descriptor 6: baz.txt
==26757==    at 0x5D78790: __open_nocancel (syscall-template.S:81)
==26757==    by 0x5D08DDF: _IO_file_open (fileops.c:229)
==26757==    by 0x5D08DDF: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:339)
==26757==    by 0x5CFD4B3: __fopen_internal (iofopen.c:90)
==26757==    by 0x408D79: cmd_foreach (fmt.c:101)
==26757==    by 0x408D79: jcmd_fmt (fmt.c:665)
==26757==    by 0x402760: main (jose.c:500)
==26757== 
==26757== Open file descriptor 5: bar.file
==26757==    at 0x5D78790: __open_nocancel (syscall-template.S:81)
==26757==    by 0x5D08DDF: _IO_file_open (fileops.c:229)
==26757==    by 0x5D08DDF: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:339)
==26757==    by 0x5CFD4B3: __fopen_internal (iofopen.c:90)
==26757==    by 0x408EE4: cmd_output (fmt.c:69)
==26757==    by 0x408EE4: jcmd_fmt (fmt.c:664)
==26757==    by 0x402760: main (jose.c:500)
==26757== 
==26757== Open file descriptor 4: foo.file
==26757==    at 0x5D78790: __open_nocancel (syscall-template.S:81)
==26757==    by 0x5D08DDF: _IO_file_open (fileops.c:229)
==26757==    by 0x5D08DDF: _IO_file_fopen@@GLIBC_2.2.5 (fileops.c:339)
==26757==    by 0x5CFD4B3: __fopen_internal (iofopen.c:90)
==26757==    by 0x408EE4: cmd_output (fmt.c:69)
==26757==    by 0x408EE4: jcmd_fmt (fmt.c:664)
==26757==    by 0x402760: main (jose.c:500)
[...]


Actual results: the fd 4 to 8 (foo, bar, baz & qux) are still opened at exit.


Expected results: jose to keep its fd table clean ☺

Comment 2 Nathaniel McCallum 2017-06-29 13:13:16 UTC
Fixed upstream: https://github.com/latchset/jose/commit/fd3b57b69077c155cdf9cb567cf0ec21c80b4c76

Comment 3 Nathaniel McCallum 2017-09-29 18:22:34 UTC
Fixed in jose-10-1.el7.

Comment 15 errata-xmlrpc 2018-04-10 14:41:44 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://access.redhat.com/errata/RHBA-2018:0819