You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中quanteda包加载时崩溃的问题求助

解决R中quanteda包加载崩溃的问题

先还原你的问题场景:在Mac Ventura 13.1系统、R 4.2.2版本下,加载quanteda包时R直接崩溃,报错信息如下:

Package version: 3.2.4
Unicode version: 14.0
ICU version: 70.1

 *** caught segfault ***
address 0x245, cause 'invalid permissions'

Traceback:
 1: RcppParallel::defaultNumThreads()
 2: get_threads()
 3: unname(min(get_threads(), na.rm = TRUE))
 4: get_options_default()
 5: quanteda_initialize()
 6: quanteda_options(initialize = TRUE)
 7: fun(libname, pkgname)
 8: doTryCatch(return(expr), name, parentenv, handler)
 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
10: tryCatchList(expr, classes, parentenv, handlers)
11: tryCatch(fun(libname, pkgname), error = identity)
12: runHook(".onAttach", ns, dirname(nspath), nsname)
13: attachNamespace(ns, pos = pos, deps, exclude, include.only)
14: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers[[1L]])
16: tryCatchList(expr, classes, parentenv, handlers)
17: tryCatch({    attr(package, "LibPath") <- which.lib.loc    ns <- loadNamespace(package, lib.loc)    env <- attachNamespace(ns, pos = pos, deps, exclude, include.only)}, error = function(e) {    P <- if (!is.null(cc <- conditionCall(e)))         paste(" in", deparse(cc)[1L])    else ""    msg <- gettextf("package or namespace load failed for %s%s:
 %s",         sQuote(package), P, conditionMessage(e))    if (logical.return && !quietly)         message(paste("Error:", msg), domain = NA)    else stop(msg, call. = FALSE, domain = NA)})
18: library(quanteda)

从报错调用栈来看,崩溃发生在RcppParallel::defaultNumThreads(),说明问题大概率出在多线程权限或依赖包兼容性上,给你几个针对性的解决思路:

可行的解决步骤

  • 优先修复RcppParallel依赖:既然崩溃点在这个包的函数上,先尝试重新安装RcppParallel,覆盖可能损坏的文件:

    install.packages("RcppParallel", type = "binary")
    

    安装完成后再重新加载quanteda试试。

  • 强制单线程加载:如果是多线程权限冲突导致的崩溃,可以在加载quanteda前先强制设置单线程,绕开线程数检测:

    Sys.setenv(RCPP_PARALLEL_NUM_THREADS = 1)
    library(quanteda)
    

    这个方法很多时候能快速解决Mac系统下的这类segfault问题。

  • 更新quanteda到最新版本:你当前用的是3.2.4版本,后续版本可能已经修复了Mac Ventura下的兼容性bug,尝试安装最新版:

    install.packages("quanteda", dependencies = TRUE)
    

    如果CRAN版还是有问题,也可以试试GitHub上的开发版:

    remotes::install_github("quanteda/quanteda")
    
  • 检查并更新ICU库:报错里显示ICU版本是70.1,Mac Ventura自带的ICU库可能和R 4.2.2不兼容。可以通过Homebrew更新ICU,然后重新编译相关R包:
    先打开终端执行:

    brew install icu4c
    

    然后在R中重新安装依赖ICU的包,比如stringi和quanteda:

    install.packages(c("stringi", "quanteda"), type = "source")
    
  • 尝试升级R版本:R 4.2.2发布于2022年10月,可能对Mac Ventura(2022年12月发布)的兼容性不够完善。尝试升级到最新的R稳定版(比如4.3.x),新版本通常会修复更多系统适配问题。

内容的提问来源于stack exchange,提问作者tobias sch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:50:22