【问题标题】:segmentation fault after building rgl on R 4.2.0 and Ubuntu 18.04在 R 4.2.0 和 Ubuntu 18.04 上构建 rgl 后出现分段错误
【发布时间】:2022-08-19 14:59:23
【问题描述】:

我正在尝试在 Ubuntu 18.04 系统上从源代码安装的 R 4.2.0 安装上安装 rgl。包似乎正在正确构建,但是当 R 尝试测试它是否可以加载包时出现分段错误。无论我是从 CRAN 安装还是直接从 rgl repo 安装,都会发生这种情况:

[...]
** R
** demo
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
*** copying figures
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Segmentation fault (core dumped)
ERROR: loading failed

知道发生了什么或我可以检查什么?

编辑 1

我尝试遵循@user2554330 的建议,安装了跳过安装后检查的包,然后在调试器下的 R 会话中加载它(我使用了valgrind)。这是跟踪,它对我不是很有帮助,但希望对你有帮助:

==36041== Conditional jump or move depends on uninitialised value(s)
==36041==    at 0x56914B7: __wmemchr_avx2 (memchr-avx2.S:275)
==36041==    by 0x55EC518: internal_fnwmatch (fnmatch_loop.c:168)
==36041==    by 0x55EF987: fnmatch@@GLIBC_2.2.5 (fnmatch.c:434)
==36041==    by 0x16F2EB35: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x55E1FA3: __scandir_tail (scandir-tail.c:54)
==36041==    by 0x16F2EE6D: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x16E52A98: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x14940103: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==    by 0x14932F37: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==    by 0x1492E5C3: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==    by 0x1492EFA4: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==    by 0x12C9B5EC: rgl::X11GUIFactory::createWindowImpl(rgl::Window*) (x11gui.cpp:662)
==36041==
==36041== Conditional jump or move depends on uninitialised value(s)
==36041==    at 0x5691497: __wmemchr_avx2 (memchr-avx2.S:264)
==36041==    by 0x55EC518: internal_fnwmatch (fnmatch_loop.c:168)
==36041==    by 0x55EF987: fnmatch@@GLIBC_2.2.5 (fnmatch.c:434)
==36041==    by 0x16F2EB35: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x55E1FA3: __scandir_tail (scandir-tail.c:54)
==36041==    by 0x16F2EE6D: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x16F2ADD1: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x1693F41C: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x169391EA: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x16E52AA0: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==36041==    by 0x14940103: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==    by 0x14932F37: ??? (in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0)
==36041==
==36041== Invalid read of size 8
==36041==    at 0x12C8EC50: rgl::Window::on_close() (gui.cpp:306)
==36041==    by 0x12C79B83: rgl::DeviceManager::createTestWindow() (devicemanager.cpp:171)
==36041==    by 0x12C8EE67: rgl_init (init.cpp:97)
==36041==    by 0x4F38F03: ??? (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F7B2AA: ??? (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F8565F: Rf_eval (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F8746E: ??? (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F88236: Rf_applyClosure (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F7C093: ??? (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F8565F: Rf_eval (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F8746E: ??? (in /usr/lib/R/lib/libR.so)
==36041==    by 0x4F88236: Rf_applyClosure (in /usr/lib/R/lib/libR.so)
==36041==  Address 0x20 is not stack\'d, malloc\'d or (recently) free\'d
  • 您可以使用选项INSTALL_opts=\"--no-test-load\" 安装它以避免安装时的测试负载,然后在调试器下运行R 并尝试使用通常的library(rgl) 加载它。调试器应该告诉你段错误发生在哪里。
  • @user2554330 这是否意味着他们应该运行 Sys.setenv(INSTALL_opts=\"--no-test-load\") 然后尝试安装软件包?
  • 不,运行install.packages(\"rgl\", INSTALL_opts=\"--no-test-load\")
  • 并且“在调试器下运行”表示使用 R -d gdb 运行 R,如果 gdb 是您的调试器,则在 gdb 提示符下键入 run
  • @user2554330 之前也没有遇到过。希望它有效

标签: r segmentation-fault rgl


【解决方案1】:

我不确定它是否会有所帮助,但您可以尝试this,即:

  1. 运行sudo nano ~/.profile
  2. 添加以下行:
    export MESA_LOADER_DRIVER_OVERRIDE=i965
    
    1. 关闭 R 并启动新的 R 会话,然后再次尝试安装包。

【讨论】:

  • 谢谢@stevec - 我试过了,但不幸的是它没有任何区别
猜你喜欢
  • 2019-09-07
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
相关资源
最近更新 更多