Bug 1259898 - table of file descriptors not updated on F_DUPFD_CLOEXEC
table of file descriptors not updated on F_DUPFD_CLOEXEC
Status: ASSIGNED
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: ksh (Show other bugs)
6.6
All Linux
high Severity high
: rc
: ---
Assigned To: Siteshwar Vashisht
BaseOS QE - Apps
: Patch, Reopened
Depends On:
Blocks: 1269194 1461138 1492198
  Show dependency treegraph
 
Reported: 2015-09-03 14:19 EDT by Paulo Andrade
Modified: 2017-09-20 12:17 EDT (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-08-12 14:39:47 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)
ksh-20120801-F_dupfd_cloexec.patch (778 bytes, patch)
2015-09-03 14:19 EDT, Paulo Andrade
no flags Details | Diff

  None (edit)
Description Paulo Andrade 2015-09-03 14:19:32 EDT
Created attachment 1070038 [details]
ksh-20120801-F_dupfd_cloexec.patch

I do not yet have a reproducer, but have a patch
that handles the final state, and user reports
the patch corrects this specific crash condition.

  But I am afraid it is just hiding a descriptor
leak. In the crash coredump, it had:

(gdb) p shp->gd->lim.open_max
$1 = 64
(gdb) p fd
$2 = 122
Comment 2 Michal Hlavinka 2015-11-16 09:54:14 EST
Any luck with getting a reproducer?
Comment 20 Siteshwar Vashisht 2017-06-18 14:30:33 EDT
I am able to reproduce a file descriptor leak with this code :

while true; do
    foo=`pvs << EOF
         $(pvs)
         EOF`
done

however patch from comment 0 does not fix it, so it may be unrelated.
Comment 21 Paulo Andrade 2017-06-19 08:50:46 EDT
The patch in comment 0 just attempts to do "what was meant", and  (mostly)
match latest ast code, that is to use F_DUPFD_CLOEXEC, detected by build
configure, that sets the value of F_dupfd_cloexec.
I believe the patch has the side effect of not "exporting" the leak in
ksh internal structures to forked shells, thus making it harder to have
cumulative leaks, that end in out of bounds writes.

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