Subject: bug#24357: closed (Re: bug#24357: pure guile program leaks memory)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 01 Mar 2017 09:08:02 +0000

Your bug report

#24357: pure guile program leaks memory

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

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

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

Subject: Re: bug#24357: pure guile program leaks memory
From: Andy Wingo <[email-masked]>
To: Amirouche Boubekki <[email-masked]>
Cc: [email-masked]
Date: Wed, 01 Mar 2017 10:06:50 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On Mon 12 Sep 2016 19:47, Amirouche Boubekki <[email-masked]> writes:

> On 2016-09-03 20:49, Amirouche Boubekki wrote:
>> On 2016-09-03 11:54, Andy Wingo wrote:
>>> On Sat 03 Sep 2016 09:20, Amirouche Boubekki
>>> <[email-masked]> writes:
>>>
>>>> Using guile 2.1.3, I have a program that:
>>>>
>>>> - reads urls from a text file
>>>> - download the urls using curl command via popen
>>>> - output the result to stdout
>>>>
>>>> Also, it relies on n-for-each-par-map for ice-9 threads.
>>>
>>> Can you reduce it please?  For example, remove the use of threads.
>>>
>>
>> Ok. I removed threads and only download the same url over and over
>> again.
>>
>> Here is the error I get on stdout:
>>
>>    (23) Failed writing body
>
> Internet says this a curl issue. Please close this bug.

No problem.  For reference, in the future just add "-done" after the bug
number in the mail, as I did above.  Cheers :)

Andy

Subject: pure guile program leaks memory
From: Amirouche Boubekki <[email-masked]>
To: [email-masked]
Date: Sat, 03 Sep 2016 09:20:36 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Using guile 2.1.3, I have a program that:

- reads urls from a text file
- download the urls using curl command via popen
- output the result to stdout

Also, it relies on n-for-each-par-map for ice-9 threads.

IMO, the most suspicious is the definition of the `curl' proc:

   (define (curl url)
      (let* ((port (open-input-pipe (format #f "curl -is \"~a\"" url)))
             (response (read-string port)))
        (close-pipe port)
        response))

I fail to see how this can leak.

To reproduce the bug you need a giant list of preferably different urls.
Such a list is available at http://hyperdev.fr/data/hn/hn.urls.txt.xz

You can run the test program with the following command:

    cat hn.urls.txt | guile urls-step00-fetch.scm > /dev/null

This is not the only program I tried on guile-2.1.3 that leaks but
it's the easiest to reproduce.

I will try to reproduce the bug on 2.0.12.