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

Tomas Kalibera tom@@@k@||ber@ @end|ng |rom gm@||@com
Thu Jun 9 10:14:47 CEST 2022


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.

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
>>>>>>
>>>>>



More information about the R-SIG-Mac mailing list