[R-SIG-Mac] tcltk causes help() to hang in R 4.2.0 on macOS

Simon Urbanek @|mon@urb@nek @end|ng |rom R-project@org
Fri Jun 10 02:19:29 CEST 2022


John,

as Tomas pointed out the problem was there, it was just not as easily triggered, because the help before 4.2.0 was not relying on a set of additional files (here KaTeX). Rcmdr does use tcltk, obviously, so it will always trigger the loop meshing issues. I wonder whether we should re-visit native Tcl/Tk now, since if I recall the main reason it didn't work before were deadlocks in the event loop, so it's even possible that those could be fixed along similar lines...

Cheers,
Simon



> On Jun 10, 2022, at 2:32 AM, John Fox <jfox using mcmaster.ca> wrote:
> 
> Dear Tomas,
> 
> On 2022-06-09 4:14 a.m., Tomas Kalibera wrote:
>> On 6/8/22 18:39, John Fox wrote:
>>> 
>>> 
>>> On 2022-06-08 12:36 p.m., John Fox wrote:
>>>> Dear Thomas,
>>>> 
>>>> Thanks for this additional information.
>>>> 
>>>> I added some of my own defensive code to the development version of the Rcmdr package, to set the "help_type" option to "text" for macOS. I'll 
>>> 
>>> I should have added that help_type is set to "text" for R version 4.2.0 only!
>> I think it is a coincidence that this was seen in R 4.2.0. The http server's handler has a safeguard against re-entrant execution since 59338 (year 2012). As that safeguard was needed at that time for clients connecting in rapid sequence, the problem with the live-lock with tcltk event loop could have been triggered already then, but probably nobody ran into this with tcltk package loaded. PR#17773 shows that attempts for re-entrant/concurrent handling of http requests were seen in R 4.0.0 with the HTML help.
> 
> My experience of this issue is just with HTML help from the Rcmdr under macOS, but I've confirmed that the problem occurs in R 4.2.0 and not in R 4.1.3, possibly because the Rcmdr doesn't load tcltk (i.e., imports tcltk)?
> 
> Best,
> John
> 
>> Best
>> Tomas
>>> 
>>>> modify that to all non-Windows platforms, and also include this in the CRAN version of the package.
>>>> 
>>>> I currently test on macOS and Windows systems but when I have a chance will get a Linux system working as well.
>>>> 
>>>> Best,
>>>>   John
>>>> 
>>>> On 2022-06-08 12:16 p.m., Tomas Kalibera wrote:
>>>>> For reference, this problem is not macOS specific, it also exists on Linux (but not on Windows which use a different code path) and the core problem is how to prevent re-entrant execution of R event handlers when run from the R/tcltk event loop, itself running from an R event handler.
>>>>> 
>>>>> R-patched now contains a defensive work-around from Simon.
>>>>> 
>>>>> We have added a more efficient and cleaner fix to R-devel, but there is some risk of breakage: this form is "the documented way" but didn't work on some systems ~22 years ago. So it would be great if people using Tcl/Tk in R on Unix, and particularly those with rarely used window managers, could test their applications or the tcltk package demos and report any issues well before the next release.
>>>>> 
>>>>> Thanks
>>>>> Tomas
>>>>> 
>>>>> On 5/30/22 01:27, John Fox wrote:
>>>>>> Dear Simon,
>>>>>> 
>>>>>> Thank you for addressing this problem so promptly.
>>>>>> 
>>>>>> Best,
>>>>>>  John
>>>>>> 
>>>>>> On 2022-05-29 6:51 p.m., Simon Urbanek wrote:
>>>>>>> Actually, I take back the reference to the commit - the deadlock is true, and removing the line is a work-around, but r78421 was not necessarily the regression. The issue seems to be caused by a combination of Tcl/Tk and KaTeX (the latter causes the browser to issue multiple parallel http-requests and the former causes the deadlock in its event loop) which has not been there in earlier R versions.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> Simon
>>>>>>> 
>>>>>>> 
>>>>>>>> On 30/05/2022, at 10:09 AM, Simon Urbanek <simon.urbanek using r-project.org> wrote:
>>>>>>>> 
>>>>>>>> John,
>>>>>>>> 
>>>>>>>> thanks, this is a regression caused by r78421 (deadlock when TclTk's event loop is called in http processing). Removing L875 in src/modules/internet/Rhttpd.c restores the previous behavior, but the underlying problem is more complex and will require more investigation.
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> Simon
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 29/05/2022, at 5:36 AM, John Fox <jfox using mcmaster.ca> wrote:
>>>>>>>>> 
>>>>>>>>> Dear R-sig-mac list members,
>>>>>>>>> 
>>>>>>>>> I've discovered that loading the tcltk package apparently causes R 4.2.0 (including the current patched version) to hang on an M1 Mac.
>>>>>>>>> 
>>>>>>>>> Try, e.g.,
>>>>>>>>> 
>>>>>>>>> library("tcltk")
>>>>>>>>> help("lm")
>>>>>>>>> 
>>>>>>>>> My session info:
>>>>>>>>> 
>>>>>>>>> ------- snip -------
>>>>>>>>> 
>>>>>>>>>> sessionInfo()
>>>>>>>>> R version 4.2.0 Patched (2022-05-28 r82413)
>>>>>>>>> Platform: aarch64-apple-darwin20 (64-bit)
>>>>>>>>> Running under: macOS Monterey 12.3.1
>>>>>>>>> 
>>>>>>>>> Matrix products: default
>>>>>>>>> BLAS: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRblas.0.dylib 
>>>>>>>>> LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib 
>>>>>>>>> 
>>>>>>>>> locale:
>>>>>>>>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>>>>>>>>> 
>>>>>>>>> attached base packages:
>>>>>>>>> [1] tcltk     stats     graphics  grDevices utils datasets  methods
>>>>>>>>> [8] base
>>>>>>>>> 
>>>>>>>>> loaded via a namespace (and not attached):
>>>>>>>>> [1] compiler_4.2.0
>>>>>>>>> 
>>>>>>>>> ------- snip -------
>>>>>>>>> 
>>>>>>>>> Some additional details: The problem occurs both in the R macOS console and, if options(help_type="html"), when R is run in a terminal window on macOS, but not when options(help_type="text"). The former is the default in the Mac R console, the latter when R is run in a terminal.
>>>>>>>>> 
>>>>>>>>> The problem is apparently new in R 4.2.0 -- it doesn't, e.g., occur in R 4.1.3. My apologies for not turning it up earlier.
>>>>>>>>> 
>>>>>>>>> I discovered the problem when accessing help in the Rcmdr GUI, which uses tcltk, caused R to hang.
>>>>>>>>> 
>>>>>>>>> Has anyone else encountered this problem?
>>>>>>>>> 
>>>>>>>>> Best,
>>>>>>>>> John
>>>>>>>>> -- 
>>>>>>>>> John Fox, Professor Emeritus
>>>>>>>>> McMaster University
>>>>>>>>> Hamilton, Ontario, Canada
>>>>>>>>> web: https://socialsciences.mcmaster.ca/jfox/
>>>>>>>>> 
>>>>>>>>> _______________________________________________
>>>>>>>>> R-SIG-Mac mailing list
>>>>>>>>> R-SIG-Mac using r-project.org
>>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> R-SIG-Mac mailing list
>>>>>>>> R-SIG-Mac using r-project.org
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>>>>>> 
>>>>>>> 
> -- 
> John Fox, Professor Emeritus
> McMaster University
> Hamilton, Ontario, Canada
> web: https://socialsciences.mcmaster.ca/jfox/
> 
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> 



More information about the R-SIG-Mac mailing list