gpt4 book ai didi

javascript - Node C++ 扩展仅在 docker 中加载 Google Compute Engine 上的段错误

转载 作者:太空狗 更新时间:2023-10-29 23:16:19 24 4
gpt4 key购买 nike

我在 Google Compute Engine 上使用 docker container + node 时遇到了一个非常奇怪的行为。设置如下:

  1. 我有一个 docker 镜像被推送到私有(private) docker registry
  2. 此镜像是在 ubuntu 12.04 之上创建的(来自 ubuntu:12.04)
  3. 我正在运行的代码是带有 C++ 扩展的 javascript Node 代码。
  4. C++ 扩展包含自定义 C++ 代码以及动态链接库(boost、blas、armadillo 等...)

我尝试在许多不同的机器(本地和 AWS 上的不同实例大小)上运行带有 Node 代码 + 扩展的 docker 容器。

当我在 GCE 上启动完全相同的容器时出现段错误。它在不同的机器和不同的操作系统上崩溃。

这是我使用 tool 时得到的输出(我从容器内部运行命令):

/opt/th/api# node start.js 
PID 118 received SIGSEGV for address: 0x7f1c7faab000
/opt/th/api/node-segfault-handler/build/Release/segfault_handler.node(+0x100d) [0x7f1c8b2fa00d]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0)[0x7f1c8b8cbcb0]
/usr/lib/libblas.so(+0x3d6fd8)[0x7f1c89229fd8]
/usr/lib/libblas.so(blas_memory_alloc+0x34d)[0x7f1c8922a70d]
/usr/lib/libblas.so(gotoblas_init+0x30)[0x7f1c88efb120]
/lib64/ld-linux-x86-64.so.2(+0xf306)[0x7f1c8c70a306]
/lib64/ld-linux-x86-64.so.2(+0xf3df)[0x7f1c8c70a3df]
/lib64/ld-linux-x86-64.so.2(+0x13ada)[0x7f1c8c70eada]
/lib64/ld-linux-x86-64.so.2(+0xf176)[0x7f1c8c70a176]
/lib64/ld-linux-x86-64.so.2(+0x1331a)[0x7f1c8c70e31a]
/lib/x86_64-linux-gnu/libdl.so.2(+0xf26)[0x7f1c8c4f7f26]
/lib64/ld-linux-x86-64.so.2(+0xf176)[0x7f1c8c70a176]
/lib/x86_64-linux-gnu/libdl.so.2(+0x152f)[0x7f1c8c4f852f]
/lib/x86_64-linux-gnu/libdl.so.2(dlopen+0x31)[0x7f1c8c4f7fc1]
node(uv_dlopen+0x30)[0x966000]
node(_ZN4node6DLOpenERKN2v89ArgumentsE+0xee)[0x818bfe]
node[0x5c7c0b]
[0xf956706362]

有没有人见过这样的事情?它看起来像一个动态链接问题。但为什么我只能在 GCE 上看到它,而在其他任何地方都看不到?

最佳答案

更新

经过长时间与这个问题的斗争,我找到了一个解决方案,通过使用不同版本的 blas 重建容器。我安装了 atlas 包(libatlas-dev libatlas-base-dev),用它重新编译,重建容器,并且不再有段错误了。仍然:不知道为什么以前的容器不能在 GCE 上运行(而它在 AWS 上运行得很好)...

关于javascript - Node C++ 扩展仅在 docker 中加载 Google Compute Engine 上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com