GNU bug report logs - #39997
High CPU load and no return value with 3.0.0

Previous Next

Package: guile;

Reported by: Roel Janssen <roel <at> gnu.org>

Date: Mon, 9 Mar 2020 12:14:02 UTC

Severity: normal

Merged with 39251

To reply to this bug, email your comments to 39997 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guile <at> gnu.org:
bug#39997; Package guile. (Mon, 09 Mar 2020 12:14:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Roel Janssen <roel <at> gnu.org>:
New bug report received and forwarded. Copy sent to bug-guile <at> gnu.org. (Mon, 09 Mar 2020 12:14:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Roel Janssen <roel <at> gnu.org>
To: bug-guile <at> gnu.org
Subject: High CPU load and no return value with 3.0.0
Date: Mon, 09 Mar 2020 13:13:21 +0100
Dear Guile hackers,

When I use the "md5" module from guile-lib (release 0.2.6.1) together
with the following snippet in Guile 3.0.0, it never returns, while on
Guile 2.2.6, it returns the MD5 sum of the input string:
---
(use-modules (md5))

(define (md5-from-string input)
  (call-with-input-string input md5))

(define (random-ascii length)
  "Returns a random string of ASCII characters of length LENGTH."
  (list->string
   (map (lambda _ (integer->char (+ (random 95) 32)))
        (iota length))))

(display
 (md5-from-string
  (random-ascii 32)))
---

Could you point me in the right direction for finding the problem?

This could be completely off-topic:
I also noticed that the function "read-string!/partial" (used by the
md5 module) no longer appears in the manual since the Guile 2.2.  Is
the usage of this function considered deprecated?

Kind regards,
Roel Janssen






Information forwarded to bug-guile <at> gnu.org:
bug#39997; Package guile. (Wed, 11 Mar 2020 11:08:02 GMT) Full text and rfc822 format available.

Message #8 received at 39997 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Roel Janssen <roel <at> gnu.org>
Cc: 39997 <at> debbugs.gnu.org
Subject: Re: bug#39997: High CPU load and no return value with 3.0.0
Date: Wed, 11 Mar 2020 12:07:33 +0100
Hi,

Roel Janssen <roel <at> gnu.org> skribis:

> When I use the "md5" module from guile-lib (release 0.2.6.1) together
> with the following snippet in Guile 3.0.0, it never returns, while on
> Guile 2.2.6, it returns the MD5 sum of the input string:
> ---
> (use-modules (md5))
>
> (define (md5-from-string input)
>   (call-with-input-string input md5))
>
> (define (random-ascii length)
>   "Returns a random string of ASCII characters of length LENGTH."
>   (list->string
>    (map (lambda _ (integer->char (+ (random 95) 32)))
>         (iota length))))
>
> (display
>  (md5-from-string
>   (random-ascii 32)))
> ---
>
> Could you point me in the right direction for finding the problem?

The Guix package has this patch:

        '(begin
           ;; Work around miscompilation on Guile 3.0.0 at -O2:
           ;; <https://bugs.gnu.org/39251>.
           (substitute* "src/md5.scm"
             (("\\(define f-ash ash\\)")
              "(define f-ash (@ (guile) ash))\n")
             (("\\(define f-add \\+\\)")
              "(define f-add (@ (guile) +))\n"))
           #t)

It’s very likely that you’re hitting this problem.

HTH!

Ludo’.




Merged 39251 39997. Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 11 Mar 2020 11:16:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-guile <at> gnu.org:
bug#39997; Package guile. (Wed, 11 Mar 2020 13:04:01 GMT) Full text and rfc822 format available.

Message #13 received at 39997 <at> debbugs.gnu.org (full text, mbox):

From: Roel Janssen <roel <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 39997 <at> debbugs.gnu.org
Subject: Re: bug#39997: High CPU load and no return value with 3.0.0
Date: Wed, 11 Mar 2020 14:03:47 +0100
On Wed, 2020-03-11 at 12:07 +0100, Ludovic Courtès wrote:
> Hi,
> 
> Roel Janssen <roel <at> gnu.org> skribis:
> 
> > When I use the "md5" module from guile-lib (release 0.2.6.1)
> > together
> > with the following snippet in Guile 3.0.0, it never returns, while
> > on
> > Guile 2.2.6, it returns the MD5 sum of the input string:
> > ---
> > (use-modules (md5))
> > 
> > (define (md5-from-string input)
> >   (call-with-input-string input md5))
> > 
> > (define (random-ascii length)
> >   "Returns a random string of ASCII characters of length LENGTH."
> >   (list->string
> >    (map (lambda _ (integer->char (+ (random 95) 32)))
> >         (iota length))))
> > 
> > (display
> >  (md5-from-string
> >   (random-ascii 32)))
> > ---
> > 
> > Could you point me in the right direction for finding the problem?
> 
> The Guix package has this patch:
> 
>         '(begin
>            ;; Work around miscompilation on Guile 3.0.0 at -O2:
>            ;; <https://bugs.gnu.org/39251>;.
>            (substitute* "src/md5.scm"
>              (("\\(define f-ash ash\\)")
>               "(define f-ash (@ (guile) ash))\n")
>              (("\\(define f-add \\+\\)")
>               "(define f-add (@ (guile) +))\n"))
>            #t)
> 
> It’s very likely that you’re hitting this problem.

Yes!  Thanks for sharing this fix.
I applied the same changes to my code and now I don't encounter the bug
anymore.

I tested the patched code with both guile-2.2 and guile-3.0.  Do you
know whether this will also work with guile-2.0?  (I'd like to keep
things compatible with guile-2.0 for a few more years).

Kind regards,
Roel Janssen






Information forwarded to bug-guile <at> gnu.org:
bug#39997; Package guile. (Wed, 11 Mar 2020 14:06:01 GMT) Full text and rfc822 format available.

Message #16 received at 39997 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Roel Janssen <roel <at> gnu.org>
Cc: 39997 <at> debbugs.gnu.org
Subject: Re: bug#39997: High CPU load and no return value with 3.0.0
Date: Wed, 11 Mar 2020 15:05:43 +0100
Roel Janssen <roel <at> gnu.org> skribis:

> On Wed, 2020-03-11 at 12:07 +0100, Ludovic Courtès wrote:

[...]

>> The Guix package has this patch:
>> 
>>         '(begin
>>            ;; Work around miscompilation on Guile 3.0.0 at -O2:
>>            ;; <https://bugs.gnu.org/39251>;.
>>            (substitute* "src/md5.scm"
>>              (("\\(define f-ash ash\\)")
>>               "(define f-ash (@ (guile) ash))\n")
>>              (("\\(define f-add \\+\\)")
>>               "(define f-add (@ (guile) +))\n"))
>>            #t)
>> 
>> It’s very likely that you’re hitting this problem.
>
> Yes!  Thanks for sharing this fix.
> I applied the same changes to my code and now I don't encounter the bug
> anymore.
>
> I tested the patched code with both guile-2.2 and guile-3.0.  Do you
> know whether this will also work with guile-2.0?  (I'd like to keep
> things compatible with guile-2.0 for a few more years).

Yes, the change above also works for Guile 2.0.

Ludo’.




Merged 39251 39997. Request was from Ludovic Courtès <ludo <at> gnu.org> to control <at> debbugs.gnu.org. (Wed, 11 Mar 2020 14:07:02 GMT) Full text and rfc822 format available.

Reply sent to Roel Janssen <roel <at> gnu.org>:
You have taken responsibility. (Wed, 11 Mar 2020 14:12:02 GMT) Full text and rfc822 format available.

Notification sent to Roel Janssen <roel <at> gnu.org>:
bug acknowledged by developer. (Wed, 11 Mar 2020 14:12:02 GMT) Full text and rfc822 format available.

Message #23 received at 39997-close <at> debbugs.gnu.org (full text, mbox):

From: Roel Janssen <roel <at> gnu.org>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 39997-close <at> debbugs.gnu.org
Subject: Re: bug#39997: High CPU load and no return value with 3.0.0
Date: Wed, 11 Mar 2020 15:11:48 +0100
On Wed, 2020-03-11 at 15:05 +0100, Ludovic Courtès wrote:
> Roel Janssen <roel <at> gnu.org> skribis:
> 
> > On Wed, 2020-03-11 at 12:07 +0100, Ludovic Courtès wrote:
> 
> [...]
> 
> > > The Guix package has this patch:
> > > 
> > >         '(begin
> > >            ;; Work around miscompilation on Guile 3.0.0 at -O2:
> > >            ;; <https://bugs.gnu.org/39251>;;.
> > >            (substitute* "src/md5.scm"
> > >              (("\\(define f-ash ash\\)")
> > >               "(define f-ash (@ (guile) ash))\n")
> > >              (("\\(define f-add \\+\\)")
> > >               "(define f-add (@ (guile) +))\n"))
> > >            #t)
> > > 
> > > It’s very likely that you’re hitting this problem.
> > 
> > Yes!  Thanks for sharing this fix.
> > I applied the same changes to my code and now I don't encounter the
> > bug
> > anymore.
> > 
> > I tested the patched code with both guile-2.2 and guile-3.0.  Do
> > you
> > know whether this will also work with guile-2.0?  (I'd like to keep
> > things compatible with guile-2.0 for a few more years).
> 
> Yes, the change above also works for Guile 2.0.

Thanks for the confirmation.  I'm closing this bug, as it is basically
a duplicate of #39251.

Kind regards,
Roel Janssen






Reply sent to Roel Janssen <roel <at> gnu.org>:
You have taken responsibility. (Wed, 11 Mar 2020 14:12:02 GMT) Full text and rfc822 format available.

Notification sent to Ludovic Courtès <ludo <at> gnu.org>:
bug acknowledged by developer. (Wed, 11 Mar 2020 14:12:02 GMT) Full text and rfc822 format available.

Did not alter fixed versions and reopened. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 11 Mar 2020 20:19:01 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 94 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.