From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: nathan via "Bug reports for GUILE, GNU's Ubiquitous Extension Language" Newsgroups: gmane.lisp.guile.bugs Subject: bug#72092: [PATCH] fix file descriptor leak in piped_process/system*/popen/etc Date: Sat, 13 Jul 2024 18:22:58 +0000 Message-ID: <0ea0f005-32be-2fa1-b96a-e67d3e4ec3f6@nborghese.com> References: <77cbc4b2a48a74957cc02fcc53238b29@riseup.net> Reply-To: nathan Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------Jb0SC31Q05tuixOe1BZ7vzWj" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35283"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 To: 72092@debbugs.gnu.org, jakub-w@riseup.net Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Sat Jul 13 20:24:18 2024 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sShPt-00093f-EL for guile-bugs@m.gmane-mx.org; Sat, 13 Jul 2024 20:24:17 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sShPf-0003py-Ey; Sat, 13 Jul 2024 14:24:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sShPd-0003pb-N2 for bug-guile@gnu.org; Sat, 13 Jul 2024 14:24:01 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sShPd-0004dD-Ec for bug-guile@gnu.org; Sat, 13 Jul 2024 14:24:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sShPe-0000W3-8g for bug-guile@gnu.org; Sat, 13 Jul 2024 14:24:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <77cbc4b2a48a74957cc02fcc53238b29@riseup.net> Resent-From: nathan Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sat, 13 Jul 2024 18:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72092 X-GNU-PR-Package: guile Original-Received: via spool by 72092-submit@debbugs.gnu.org id=B72092.17208949831917 (code B ref 72092); Sat, 13 Jul 2024 18:24:02 +0000 Original-Received: (at 72092) by debbugs.gnu.org; 13 Jul 2024 18:23:03 +0000 Original-Received: from localhost ([127.0.0.1]:56779 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sShOh-0000Uc-46 for submit@debbugs.gnu.org; Sat, 13 Jul 2024 14:23:03 -0400 Original-Received: from mail.nborghese.com ([207.148.28.48]:42354) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sShOe-0000UA-Gr for 72092@debbugs.gnu.org; Sat, 13 Jul 2024 14:23:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=062122; bh=I7gj/uVTTiU1z SegR/Py49e01qvqMuBO/X9kRQQnqMY=; h=to:subject:from:date; d=nborghese.com; b=oZ+PHaXkzzyq4WEAerMr619eRj2VDQHj1Q73uNqBchtF5lpjwZq SssqmZ0qrnnLKZ3lvgaJLmi28wglYAEsglhVFUmqIy4BV9XdboKyr5Fyvt98GinGcKeYo3 MiTOMn3aIjDDHgxxzXmEP0hvED22Qobge0zdvNQlgf5va6ofYw= Original-Received: by nborghese.com (OpenSMTPD) with ESMTPSA id 29cad47b (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sat, 13 Jul 2024 18:22:51 +0000 (UTC) Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.bugs:10900 Archived-At: This is a multi-part message in MIME format. --------------Jb0SC31Q05tuixOe1BZ7vzWj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit fix is attached test code: (use-modules (ice-9 ftw)) (use-modules (ice-9 popen)) (define (print-open) (format #t "~a\n" (length (scandir "/proc/self/fd")))) (let ((p (%make-void-port "rw"))) (print-open) (parameterize ((current-output-port p) (current-input-port p) (current-error-port p)) (system* "ls")) (close-port p) (print-open)) (parameterize ((current-error-port (%make-void-port OPEN_BOTH))) (while #t (close-pipe (open-pipe* OPEN_READ "free")) (print-open) (sleep 1))) there's still a one-time increase in the file descriptors, but it seems unrelated. or at least much harder to find. (by the way, ignoring current-output-port and using /dev/null is bad. it would be nice to open a pipe in that case and forward whatever the child writes to the scheme port. but that would require a separate thread, and it may be impossible to do something like that for current-input-port) --------------Jb0SC31Q05tuixOe1BZ7vzWj Content-Type: text/x-patch; charset=UTF-8; name="0001-fix-file-descriptor-leak-in-piped_process-system-pop.patch" Content-Disposition: attachment; filename*0="0001-fix-file-descriptor-leak-in-piped_process-system-pop.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NjZlNGFiMmMyY2IxZjkzYWY0ODEyOTBjMWQzNmRiMDA5NzZiOGNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBuYXRoYW4gPG5hdGhhbl9tYWlsQG5ib3JnaGVzZS5j b20+CkRhdGU6IFNhdCwgMTMgSnVsIDIwMjQgMTM6MjU6MDggLTA0MDAKU3ViamVjdDogW1BB VENIXSBmaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gcGlwZWRfcHJvY2Vzcy9zeXN0ZW0q L3BvcGVuL2V0YwoKKiBsaWJndWlsZS9wb3NpeC5jIChwaXBlZF9wcm9jZXNzKTogY2xvc2Ug YXV0b21hdGljYWxseSBvcGVuZWQgL2Rldi9udWxsCiAgRml4IGJ1ZyAjNzIwOTIKLS0tCiBs aWJndWlsZS9wb3NpeC5jIHwgMzMgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGliZ3VpbGUvcG9zaXguYyBiL2xpYmd1aWxlL3Bvc2l4LmMKaW5kZXgg OWE4NzNiNWExLi44MDI4YjQ5M2YgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL3Bvc2l4LmMKKysr IGIvbGliZ3VpbGUvcG9zaXguYwpAQCAtMTUzNSwzMiArMTUzNSwzMiBAQCBzdGF0aWMgaW50 CiBwaXBlZF9wcm9jZXNzIChwaWRfdCAqcGlkLCBTQ00gcHJvZywgU0NNIGFyZ3MsIFNDTSBm cm9tLCBTQ00gdG8pCiAjZGVmaW5lIEZVTkNfTkFNRSAicGlwZWQtcHJvY2VzcyIKIHsKLSAg aW50IHJlYWRpbmcsIHdyaXRpbmc7CiAgIGludCBjMnBbMl07IC8qIENoaWxkIHRvIHBhcmVu dC4gICovCiAgIGludCBwMmNbMl07IC8qIFBhcmVudCB0byBjaGlsZC4gICovCiAgIGludCBp biA9IC0xLCBvdXQgPSAtMSwgZXJyID0gLTE7CiAgIGNoYXIgKmV4ZWNfZmlsZTsKICAgY2hh ciAqKmV4ZWNfYXJndjsKICAgY2hhciAqKmV4ZWNfZW52ID0gZW52aXJvbjsKKyAgaW50IHRv X2Nsb3NlWzNdOworICBpbnQgbnVtX3RvX2Nsb3NlPTA7CiAKICAgZXhlY19maWxlID0gc2Nt X3RvX2xvY2FsZV9zdHJpbmcgKHByb2cpOwogICBleGVjX2FyZ3YgPSBzY21faV9hbGxvY2F0 ZV9zdHJpbmdfcG9pbnRlcnMgKHNjbV9jb25zIChwcm9nLCBhcmdzKSk7CiAKLSAgcmVhZGlu ZyA9IHNjbV9pc19wYWlyIChmcm9tKTsKLSAgd3JpdGluZyA9IHNjbV9pc19wYWlyICh0byk7 Ci0KLSAgaWYgKHJlYWRpbmcpCisgIGlmIChzY21faXNfcGFpciAoZnJvbSkpCiAgICAgewog ICAgICAgYzJwWzBdID0gc2NtX3RvX2ludCAoc2NtX2NhciAoZnJvbSkpOwogICAgICAgYzJw WzFdID0gc2NtX3RvX2ludCAoc2NtX2NkciAoZnJvbSkpOwogICAgICAgb3V0ID0gYzJwWzFd OworICAgICAgdG9fY2xvc2VbbnVtX3RvX2Nsb3NlKytdID0gb3V0OwogICAgIH0KIAotICBp ZiAod3JpdGluZykKKyAgaWYgKHNjbV9pc19wYWlyICh0bykpCiAgICAgewogICAgICAgcDJj WzBdID0gc2NtX3RvX2ludCAoc2NtX2NhciAodG8pKTsKICAgICAgIHAyY1sxXSA9IHNjbV90 b19pbnQgKHNjbV9jZHIgKHRvKSk7CiAgICAgICBpbiA9IHAyY1swXTsKKyAgICAgIHRvX2Ns b3NlW251bV90b19jbG9zZSsrXSA9IGluOwogICAgIH0KIAogICB7CkBAIC0xNTY5LDMwICsx NTY5LDM3IEBAIHBpcGVkX3Byb2Nlc3MgKHBpZF90ICpwaWQsIFNDTSBwcm9nLCBTQ00gYXJn cywgU0NNIGZyb20sIFNDTSB0bykKICAgICBpZiAoU0NNX09QT1VURlBPUlRQICgocG9ydCA9 IHNjbV9jdXJyZW50X2Vycm9yX3BvcnQgKCkpKSkKICAgICAgIGVyciA9IFNDTV9GUE9SVF9G REVTIChwb3J0KTsKICAgICBlbHNlCi0gICAgICBlcnIgPSBvcGVuICgiL2Rldi9udWxsIiwg T19XUk9OTFkgfCBPX0NMT0VYRUMpOworICAgICAgeworICAgICAgICBlcnIgPSBvcGVuICgi L2Rldi9udWxsIiwgT19XUk9OTFkgfCBPX0NMT0VYRUMpOworICAgICAgICB0b19jbG9zZVtu dW1fdG9fY2xvc2UrK10gPSBlcnI7CisgICAgICB9CiAgICAgaWYgKG91dCA9PSAtMSkKICAg ICAgIHsKICAgICAgICAgaWYgKFNDTV9PUE9VVEZQT1JUUCAoKHBvcnQgPSBzY21fY3VycmVu dF9vdXRwdXRfcG9ydCAoKSkpKQogICAgICAgICAgIG91dCA9IFNDTV9GUE9SVF9GREVTIChw b3J0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgIG91dCA9IG9wZW4gKCIvZGV2L251bGwi LCBPX1dST05MWSB8IE9fQ0xPRVhFQyk7CisgICAgICAgICAgeworICAgICAgICAgICAgb3V0 ID0gb3BlbiAoIi9kZXYvbnVsbCIsIE9fV1JPTkxZIHwgT19DTE9FWEVDKTsKKyAgICAgICAg ICAgIHRvX2Nsb3NlW251bV90b19jbG9zZSsrXSA9IG91dDsKKyAgICAgICAgICB9CiAgICAg ICB9CiAgICAgaWYgKGluID09IC0xKQogICAgICAgewogICAgICAgICBpZiAoU0NNX09QSU5G UE9SVFAgKChwb3J0ID0gc2NtX2N1cnJlbnRfaW5wdXRfcG9ydCAoKSkpKQogICAgICAgICAg IGluID0gU0NNX0ZQT1JUX0ZERVMgKHBvcnQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg aW4gPSBvcGVuICgiL2Rldi9udWxsIiwgT19SRE9OTFkgfCBPX0NMT0VYRUMpOworICAgICAg ICAgIHsKKyAgICAgICAgICAgIGluID0gb3BlbiAoIi9kZXYvbnVsbCIsIE9fUkRPTkxZIHwg T19DTE9FWEVDKTsKKyAgICAgICAgICAgIHRvX2Nsb3NlW251bV90b19jbG9zZSsrXSA9IGlu OworICAgICAgICAgIH0KICAgICAgIH0KICAgfQogCiAgICpwaWQgPSBkb19zcGF3biAoZXhl Y19maWxlLCBleGVjX2FyZ3YsIGV4ZWNfZW52LCBpbiwgb3V0LCBlcnIsIDEpOwogICBpbnQg ZXJybm9fc2F2ZSA9ICgqcGlkIDwgMCkgPyBlcnJubyA6IDA7CiAKLSAgaWYgKHJlYWRpbmcp Ci0gICAgY2xvc2UgKGMycFsxXSk7Ci0gIGlmICh3cml0aW5nKQotICAgIGNsb3NlIChwMmNb MF0pOworICB3aGlsZSAobnVtX3RvX2Nsb3NlPjApCisgICAgY2xvc2UgKHRvX2Nsb3NlWy0t bnVtX3RvX2Nsb3NlXSk7CiAKICAgaWYgKCpwaWQgPT0gLTEpCiAgICAgc3dpdGNoIChlcnJu b19zYXZlKQotLSAKMi40NS4yCgo= --------------Jb0SC31Q05tuixOe1BZ7vzWj--