From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25526 invoked by alias); 2 May 2017 14:19:37 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41041 Received: (qmail 4533 invoked from network); 2 May 2017 14:19:37 -0000 X-Qmail-Scanner-Diagnostics: from proxy.ad-vega.si by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(84.255.236.157):SA:0(0.0/5.0):. Processed in 1.111444 secs); 02 May 2017 14:19:37 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_PASS,T_TVD_MIME_NO_HEADERS autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: jure@varlec.si X-Qmail-Scanner-Mime-Attachments: |forkleak.sh| X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at varlec.si designates 84.255.236.157 as permitted sender) Date: Tue, 2 May 2017 16:19:25 +0200 From: Jure Varlec To: zsh-workers@zsh.org Subject: Combination of pipes and &! leaks file descriptors Message-ID: <20170502161925.03e9f794@leopold.lan> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.31; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_//7=b4spr3/RsE2Ls4cZ=sVA"; protocol="application/pgp-signature" --Sig_//7=b4spr3/RsE2Ls4cZ=sVA Content-Type: multipart/mixed; boundary="MP_/OyRIEq3ISm.kdyJOmQbWnp2" --MP_/OyRIEq3ISm.kdyJOmQbWnp2 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, I noticed a file descriptor leak today in a script that was forking jobs in a loop and ceased to work after 1000 jobs. A (quick, admittedly) search of the mailing list found nothing relevant. A minimal example is attached, using `lsof` to demonstrate the problem. I also attached its output in case there are difficulties reproducing the problem. It is interesting to see that only the `&!` operator causes the problem, the `disown` command does not. A pipe needs to be present in the backgrounded command. Regards Jure --MP_/OyRIEq3ISm.kdyJOmQbWnp2 Content-Type: application/x-shellscript Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=forkleak.sh IyEvYmluL3pzaAoKbHNvZl9zdGFydD0iJChsc29mIC1FIC1wICQkIHwgZ3JlcCBwaXBlKSIKCmZv ciBpIGluIHsxLi4xMH07IGRvCiAgICB0cnVlIHwgdHJ1ZSAmCiAgICBkaXNvd24KZG9uZQpzbGVl cCAxCmxzb2ZfZGlzb3duPSIkKGxzb2YgLUUgLXAgJCQgfCBncmVwIHBpcGUpIgoKZm9yIGkgaW4g ezEuLjEwfTsgZG8KICAgIHRydWUgfCB0cnVlICYhCmRvbmUKc2xlZXAgMQpsc29mX2RpcmVjdD0i JChsc29mIC1FIC1wICQkIHwgZ3JlcCBwaXBlKSIKCmVjaG8gJ1dpdGggdGhlYGRpc293bmAga2V5 d29yZDonCmRpZmYgIDwoPDw8IiRsc29mX3N0YXJ0IikgPCg8PDwiJGxzb2ZfZGlzb3duIikKZWNo bwplY2hvICdXaXRoIHRoZSBgJiFgIG9wZXJhdG9yOicKZGlmZiAgPCg8PDwiJGxzb2Zfc3RhcnQi KSA8KDw8PCIkbHNvZl9kaXJlY3QiKQo= --MP_/OyRIEq3ISm.kdyJOmQbWnp2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=forkleak.out V2l0aCB0aGVgZGlzb3duYCBrZXl3b3JkOgoxYzEKPCBmb3JrbGVhay4gMjcwNjYgZXh6b21iaWUg ICAxN3IgIEZJRk8gICAgICAgICAgICAgICAwLDEwICAgICAgMHQwICAxOTg4ODE5IHBpcGUgMjcw NjcsZm9ya2xlYWsuLDF3IDI3MDY5LGdyZXAsMXcKLS0tCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9t YmllICAgMTdyICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4OTA5MSBwaXBl IDI3MDkyLGZvcmtsZWFrLiwxdyAyNzA5NCxncmVwLDF3CgpXaXRoIHRoZSBgJiFgIG9wZXJhdG9y OgoxYzEsMTEKPCBmb3JrbGVhay4gMjcwNjYgZXh6b21iaWUgICAxN3IgIEZJRk8gICAgICAgICAg ICAgICAwLDEwICAgICAgMHQwICAxOTg4ODE5IHBpcGUgMjcwNjcsZm9ya2xlYWsuLDF3IDI3MDY5 LGdyZXAsMXcKLS0tCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMTdyICBGSUZPICAgICAg ICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4MzE4NiBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4 em9tYmllICAgMThyICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4ODAxMCBw aXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMTlyICBGSUZPICAgICAgICAgICAgICAg MCwxMCAgICAgIDB0MCAgMTk4ODAxMyBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAg MjByICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4ODAxNiBwaXBlCj4gZm9y a2xlYWsuIDI3MDY2IGV4em9tYmllICAgMjFyICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAg IDB0MCAgMTk4ODAxOSBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMjJyICBGSUZP ICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4ODAyMiBwaXBlCj4gZm9ya2xlYWsuIDI3 MDY2IGV4em9tYmllICAgMjNyICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4 ODAyNSBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMjRyICBGSUZPICAgICAgICAg ICAgICAgMCwxMCAgICAgIDB0MCAgMTk4MzE4OSBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9t YmllICAgMjVyICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4MzE5MSBwaXBl Cj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMjZyICBGSUZPICAgICAgICAgICAgICAgMCwx MCAgICAgIDB0MCAgMTk4ODAzMCBwaXBlCj4gZm9ya2xlYWsuIDI3MDY2IGV4em9tYmllICAgMjdy ICBGSUZPICAgICAgICAgICAgICAgMCwxMCAgICAgIDB0MCAgMTk4MzI0MiBwaXBlIDI3MTE3LGZv cmtsZWFrLiwxdyAyNzExOSxncmVwLDF3Cg== --MP_/OyRIEq3ISm.kdyJOmQbWnp2-- --Sig_//7=b4spr3/RsE2Ls4cZ=sVA Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEHh+IgChKcO6HqEuBI54d4ROkir4FAlkIlW0ACgkQI54d4ROk ir6Wgg/+INy2dmueoyU5zmJHjkuOmtOrrqPO2eDob2+E7UMdV07UTwh930n1asRj cG++zE89zwWUL42Q3hLJ4/Q/AWWAYP4bUEDGtmxPU3oQAYI4D5Di5qYAWhAfrSxI DVQdMOQjVOrQmXwdHRp1ifBZWM5N2rRUf+F8yUF/xYX+gv4b3lDejq6UTVxBRUC3 QezYgS0gPa2X6MMjSQQVPycNJSB/QFUMIfczM9jN3NEVhewKATqq1wXmXl1Cr+jD 6/uhNeRKDYtwc0mYDyVpE51RVP2xKFSmuGdEm9yPQ9/XrpA95HymZdFCEpZuI0nT s576mKV5NqwzXFrSrahj5rjPPcXCM8OxGF4/4Twgwu2+b//FWnSWsxZwYPs65cj3 7Cgzfc0+CMHm6vRqjeXWWGsczskd7m9RpK957cArc81PjqPHHk812/RaNJZe0Nur vJze7uglFgaQVOaiMBVLKsk+8TpxcH/xIg2aKfdpKWQgQwU7Q/Lc2nb/gNj25JbN MHyqXMYJ5gHl07prosHkWdgO1kPsUwBovvdGoDGKUDYxb3d+kYca04IAzyLf4mzQ zl4QqlrY1mDaCZBgSTkvrsdt/b2dsTaA0eZVTkkCr+izkUEEL7uPKPYk9MkCkmkE o0jiUdNLwfF9Q2zTVyXK3UkxEBZCF5+Hsii52kFNTh7hQeJSzGA= =XonA -----END PGP SIGNATURE----- --Sig_//7=b4spr3/RsE2Ls4cZ=sVA--