x86_64执行TensorOperations接口时发生coredump,堆栈信息最后发生在libffi.so中
问题现象
在x86_64架构设备上执行TensorOperations接口时发生coredump,打印堆栈信息发现最后执行在libffi.so中。
原因分析
用户程序中链接了libstreammanager.so,运行时优先加载了软件包中高版本的libffi。部分TensorOperations接口运行时会调用到Python的CAPI接口,但环境上的Python安装时依赖系统自带的低版本libffi,两个版本的libffi在x86_64架构设备上存在冲突,造成coredump。
解决方案
- 查看当前环境使用的Python,在对应lib路径下执行以下命令:
find /path/to/python -name "_ctypes.cpython*so"
- 使用ldd查看找到的so所依赖的libffi.so的路径:
ldd /path/to/_ctypes.cpython*so
- 执行以下命令,优先加载python依赖的libffi动态库:
export LD_PRELOAD=/path/to/libffi.so
父主题: 依赖冲突类