Subject: bug#38836: closed (Re: bug#20145: (guix build download) leaks file descriptor on TLS connections)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 03 Jan 2020 15:13:02 +0000

Your bug report

#20145: guix refresh: Too many open files

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
20145: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20145
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#20145: (guix build download) leaks file descriptor on TLS connections
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: Ricardo Wurmus <[email-masked]>, Valentin Ignatev <[email-masked]>
Date: Fri, 03 Jan 2020 16:12:11 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello again!

Ludovic Courtès <[email-masked]> skribis:

> Back in 2015, I closed <https://issues.guix.gnu.org/issue/20145> saying:
>
>> [email-masked] (Ludovic Courtès) skribis:
>>
>>> When opening an HTTPS connection, the file descriptor beneath the port
>>> returned by ‘tls-wrap’ is leaked.
>>>
>>> This is not a problem in most cases (downloads) because the process is
>>> left as soon as the download is over.
>>>
>>> This is more problematic for ‘guix lint’, which may open a large number
>>> of HTTPS connections for the ‘source’ and ‘home-page’ checkers when
>>> working on all the packages.
>>
>> This is essentially solved by commits
>> 14d6ca3e4dd23ee92adb5e2fcf58546e67534631 and
>> 097a951e96718a037dbfa6d579e2d26f7dab3e82.
>>
>> One still needs to be careful, though, for instance because closing a
>> chunked encoding port (which is a custom binary input port wrapped
>> around the real socket port) still fails to close the raw socket port
>> that’s behind the TLS session record port.
>
> Unfortunately, the bug just reported by Valentin and by Ricardo are
> instances of this problem (at least I checked with crates.io and it
> uses chunked encoding, leading to a file descriptor leak):
>
>   https://issues.guix.gnu.org/issue/38857
>   https://issues.guix.gnu.org/issue/38836

Commit f4cde9ac4aedb516c050a30fd999673da434bfa0 fixes it for good it
seems!  (You can monitor /proc/PID/fd while ‘guix refresh’ or ‘guix
import crate -r’ is running.  :-))

There was also a CRAN-specific FD leak fixed in
af0aefd8c10701fa32341506e36297e5105f6143.

Let me know is anything is amiss!

Ludo’.

Subject: guix refresh: Too many open files
From: Ricardo Wurmus <[email-masked]>
To: [email-masked]
Date: Tue, 31 Dec 2019 20:50:55 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

I regularly run this command:

    ./pre-inst-env guix refresh -t cran,bioconductor -u

This makes a lot of HTTP requests to check for updates.  It often aborts
with this error before it can finish checking for updates of all
packages:

   guix refresh: error: open-file: Too many open files:
   "/home/rekado/.cache/guix/http/EXpQeEGkSNjRNVeWpGMNV8ENjJfhl2vugsTbrdaTshg="

--
Ricardo