x86_64执行TensorOperations接口时发生coredump,堆栈信息最后发生在libffi.so中

问题现象

x86_64架构设备上执行TensorOperations接口时发生coredump,打印堆栈信息发现最后执行在libffi.so中。

原因分析

用户程序中链接了libstreammanager.so,运行时优先加载了软件包中高版本的libffi。部分TensorOperations接口运行时会调用到Python的CAPI接口,但环境上的Python安装时依赖系统自带的低版本libffi,两个版本的libffi在x86_64架构设备上存在冲突,造成coredump。

解决方案

  1. 查看当前环境使用的Python,在对应lib路径下执行以下命令:

    find /path/to/python -name "_ctypes.cpython*so"

  2. 使用ldd查看找到的so所依赖的libffi.so的路径:

    ldd /path/to/_ctypes.cpython*so

  3. 执行以下命令,优先加载python依赖的libffi动态库:

    export LD_PRELOAD=/path/to/libffi.so