[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