Skip to content

tcltk causes help() to hang in R 4.2.0 on macOS

6 messages · Dan Kelley, Jean Thioulouse, Simon Urbanek +1 more

#
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
#
Yes, on my Intel mac (macos 12.5beta), I get the same in the macOS R.app, but not in commandline-R or R-within-RStudio.

Dan Kelley / Dalhousie University / Nova Scotia / Canada
#
Thank you ! I was wondering why I had this problem with help hanging. Note that if you close the browser window and type Ctrl-C in the console, the next help command will work correctly.
R version 4.2.0 (2022-04-22)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Monterey 12.4

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

Random number generation:
 RNG:     Mersenne-Twister 
 Normal:  Inversion 
 Sample:  Rounding 
 
locale:
[1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.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 tools_4.2.0
?-
Jean THIOULOUSE - https://lbbe-web.univ-lyon1.fr/en/annuaires-des-membres/thioulouse-jean
https://orcid.org/0000-0001-7664-0598 (ORCID page)
https://www.springer.com/fr/book/9781493988488 (ade4 Book)
https://pbil.univ-lyon1.fr/JTHome/Biblio/ThioulouseEB2021.pdf (Evol. Biol. paper)
1 day later
#
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
#
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
#
Dear Simon,

Thank you for addressing this problem so promptly.

Best,
  John
On 2022-05-29 6:51 p.m., Simon Urbanek wrote: