From iuke-tier@ey m@iii@g oii uiow@@edu  Mon May 13 16:54:27 2024
From: iuke-tier@ey m@iii@g oii uiow@@edu (iuke-tier@ey m@iii@g oii uiow@@edu)
Date: Mon, 13 May 2024 09:54:27 -0500 (CDT)
Subject: [Rd] 
 [External] R hang/bug with circular references and promises
In-Reply-To: <CA+hbrhVPoFR8tLuhS60oXW_OhWW76YxhnD0VLSZaAi4yVDgWhA@mail.gmail.com>
References: <CAPLMX9EyfB7cLgu89WPT_RFeuC1BDPYcZ81jR2q1aaDPVtnkEw@mail.gmail.com>
 <d0dc027e-b579-ba5b-ec62-d1bd52fbf47f@uiowa.edu>
 <CA+hbrhVPoFR8tLuhS60oXW_OhWW76YxhnD0VLSZaAi4yVDgWhA@mail.gmail.com>
Message-ID: <988ea195-1fbe-9e54-d68c-64f6bf36f9a0@uiowa.edu>

On Sat, 11 May 2024, Peter Langfelder wrote:

> On Sat, May 11, 2024 at 9:34?AM luke-tierney--- via R-devel
> <r-devel at r-project.org> wrote:
>>
>> On Sat, 11 May 2024, Travers Ching wrote:
>>
>>> The following code snippet causes R to hang. This example might be a
>>> bit contrived as I was experimenting and trying to understand
>>> promises, but uses only base R.
>>
>> This has nothing to do with promises. You created a cycle in the
>> environment chain. A simpler variant:
>>
>> e <- new.env()
>> parent.env(e) <- e
>> get("x", e)
>>
>> This will hang and is not interruptable -- loops searching up
>> environment chains are too speed-critical to check for interrupts.  It
>> is, however, pretty easy to check whether the parent change would
>> create a cycle and throw an error if it would. Need to think a bit
>> about exactly where the check should go.
>
> FWIW, the help for parent.env already explicitly warns against using
> parent.env <-:
>
> The replacement function ?parent.env<-? is extremely dangerous as
>     it can be used to destructively change environments in ways that
>     violate assumptions made by the internal C code.  It may be
>     removed in the near future.

Looks like I added that warning 22 years ago, so that should be enough
notice :-). I'll look into removing it now.

Best,

luke

>
> Peter
>

-- 
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:   luke-tierney at uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu


[Rd] [External] R hang/bug with circular references and promises
iuke-tier@ey m@iii@g oii uiow@@edu