c++ - 更改 Mac OS X 10.9.1 w/Xcode 5 上 R Shiny 使用的 C++ 标准库(__cxa_guard_acquire 检测到死锁)

标签 c++ xcode r macos shiny

这可能是一个不太可能的事情,但是有没有办法将 OS X 上 R Shiny 动态使用的 C++ 标准库从 libc++ 更改为 libstdc++

提出这个问题的原因是我想尝试一下R Shiny但每当我尝试任何示例时,我的 R 就会崩溃:

> require(shiny)
Loading required package: shiny
> runExample("01_hello")
libc++abi.dylib: __cxa_guard_acquire detected deadlock
Abort trap: 6

从 R Gui 运行,我获得了更多信息(详细信息),并且我注意到崩溃之前有一个 RcppExports.cpp 调用。我在使用 libc++(带有 C+11 的 LLVM C++ 标准库)与 libstdc++(GNU C++ 标准库)时遇到了问题before 。鉴于 Rcpp 需要 GNU 库,而 LLVM 库是 Xcode 5 中的默认库,我怀疑这就是问题所在。有没有办法更改 R Shiny 在 Mac OS X (10.9.1) 上加载的默认 C++ 库?

Process:         R [23120]
Path:            /Applications/R.app/Contents/MacOS/R
Identifier:      org.R-project.R
Version:         R 3.0.2 GUI 1.62 Snow Leopard build (6558)
Code Type:       X86-64 (Native)
Parent Process:  launchd [250]
Responsible:     R [23120]
User ID:         501
Date/Time:       2014-02-06 14:55:39.785 +0000
OS Version:      Mac OS X 10.9.1 (13B42)
Report Version:  11
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called
__cxa_guard_acquire detected deadlock

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff9a5e4866 __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff8e92135c pthread_kill + 92
2   libsystem_c.dylib               0x00007fff980bebba abort + 125
3   libc++abi.dylib                 0x00007fff925a1141 abort_message + 257
4   libc++abi.dylib                 0x00007fff925c428e __cxa_guard_acquire + 192
5   httpuv.so                       0x000000010860500b Rcpp::RNGScope::RNGScope() + 33 (routines.h:74)
6   httpuv.so                       0x00000001086040d6 httpuv_makeTcpServer + 54 (RcppExports.cpp:32)
7   libR.dylib                      0x00000001001831ce do_dotcall + 1230 (dotcode.c:634)
8   libR.dylib                      0x00000001001ab2ad Rf_eval + 1181 (eval.c:642)
9   libR.dylib                      0x00000001001b7a70 do_begin + 384 (eval.c:1573)
10  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
11  libR.dylib                      0x00000001001b535e Rf_applyClosure + 1422 (eval.c:1019)
12  libR.dylib                      0x00000001001ab34e Rf_eval + 1342 (eval.c:661)
13  libR.dylib                      0x00000001001b7717 do_set + 343 (eval.c:1902)
14  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
15  libR.dylib                      0x00000001001b7a70 do_begin + 384 (eval.c:1573)
16  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
17  libR.dylib                      0x00000001001b535e Rf_applyClosure + 1422 (eval.c:1019)
18  libR.dylib                      0x00000001001ab34e Rf_eval + 1342 (eval.c:661)
19  libR.dylib                      0x00000001001b4b03 forcePromise + 147 (eval.c:464)
20  libR.dylib                      0x00000001001b5624 getvar + 452 (eval.c:3525)
...
65  libR.dylib                      0x00000001001ab34e Rf_eval + 1342 (eval.c:661)
66  libR.dylib                      0x00000001001b7a70 do_begin + 384 (eval.c:1573)
67  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
68  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
69  libR.dylib                      0x00000001001b7a70 do_begin + 384 (eval.c:1573)
70  libR.dylib                      0x00000001001ab11f Rf_eval + 783 (eval.c:614)
71  libR.dylib                      0x00000001001b535e Rf_applyClosure + 1422 (eval.c:1019)
72  libR.dylib                      0x00000001001ab34e Rf_eval + 1342 (eval.c:661)
73  libR.dylib                      0x00000001001d8b9a R_ReplDLLdo1 + 458 (main.c:363)
74  org.R-project.R                 0x000000010001f38e run_REngineRmainloop + 302
75  org.R-project.R                 0x000000010001379c -[REngine runREPL] + 124
76  org.R-project.R                 0x0000000100001b7e main + 910
77  org.R-project.R                 0x00000001000017e4 start + 52

Thread 1:
...

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00007fff7d09a310  rcx: 0x00007fff5fbf84d8  rdx: 0x0000000000000000
  rdi: 0x0000000000000707  rsi: 0x0000000000000006  rbp: 0x00007fff5fbf8500  rsp: 0x00007fff5fbf84d8
   r8: 0x00007fff925c7635   r9: 0x00007fff980e6900  r10: 0x0000000008000000  r11: 0x0000000000000206
  r12: 0x00007fff5fbf8660  r13: 0x0000000107d76548  r14: 0x0000000000000006  r15: 0x00007fff5fbf8540
  rip: 0x00007fff9a5e4866  rfl: 0x0000000000000206  cr2: 0x0000000100333fd4

Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

最佳答案

看到我遇到了完全相同的问题 - hadley 和 Joe 的评论为我在 MacOSX Mavericks 工作(很抱歉窃取答案,但我没有足够的声誉来添加评论...)

  1. 安装最新的 xcode
  2. (重新)安装 Rcpp
  3. 重新启动 R

关于c++ - 更改 Mac OS X 10.9.1 w/Xcode 5 上 R Shiny 使用的 C++ 标准库(__cxa_guard_acquire 检测到死锁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607657/

相关文章:

ios - 通过解析保持当前用户 session 处于事件状态?

xcode - 为什么我的 scrollView 是零?

iphone - 在通过AppStore批准之前,有什么方法可以与 friend 分享我开发的应用程序?

从列表中删除重复和小向量

r - 使用仅包含 ISO 周的数据集将 ISO 周聚合为几个月

c++ - 使用static_assert时如何避免没有返回表达式的警告?

c++ - 如何理解#1664的提议决议

c++ - 当我执行 C++ 程序时如何设置 VSCode 屏幕不会立即消失

c++ - 比较 C++20 中的多态类型

regex - 如何grep这个而不是那个?