Linux服务器RStudio运行无递归脚本遇C栈使用接近上限报错求助
解决方案
检查加法运算符的自定义方法
运行以下命令查看+运算符的已注册方法,排查是否存在异常的自定义重载:methods("+") utils::findMethods("+")如果发现非base包的异常方法,比如自定义的
+.numeric,可以用removeS3method("+", "numeric")移除,或者卸载对应的问题包后重试加法操作。使用纯净R环境测试
跳过所有自定义配置启动R:- 在RStudio Server中,通过
Session -> Restart R with Core Only重启会话; - 在终端中执行
R --vanilla启动纯净R环境,再运行1550793610 + 10。
如果纯净环境下正常,说明问题出在你的.Rprofile、Rprofile.site等配置脚本,或者加载的第三方包中,逐一排查这些配置和包。
- 在RStudio Server中,通过
调整R的C栈限制配置
即使系统ulimit设为unlimited,R可能有自身的栈限制:- 在R中查看当前栈限制:
Sys.getenv("R_C_STACK_LIMIT") - 如果值过小,尝试临时设置更大的栈限制:
重启R后重试操作。Sys.setenv(R_C_STACK_LIMIT=16777216) # 设置为16MB,可根据需要调整 - 永久设置RStudio Server的栈限制:编辑
/etc/rstudio/rserver.conf,添加:
然后重启RStudio Server服务:rserver-rsession-c-stack-limit=16777216sudo systemctl restart rstudio-server
- 在R中查看当前栈限制:
检查R安装完整性
如果上述方法无效,可能是R的基础包损坏:- 先卸载现有R,再从官方源重新安装对应版本;
- 对比Windows上的R版本,尝试升级/降级到相同版本,排除版本兼容性问题。
终端环境验证
脱离RStudio Server,直接在Linux终端启动R,执行加法操作。如果终端中正常,说明问题出在RStudio Server的会话配置或权限上,可尝试重新部署RStudio Server或检查其运行用户的环境变量。
内容的提问来源于stack exchange,提问作者DinoDave
相关产品推荐
相关产品推荐

