虚拟地址抢占导致mmap失败

适用场景

现象描述

mmap申请失败,Host侧日志显示drvMemDeviceOpen失败,出现如图1日志信息。

图1 drvMemDeviceOpen失败

可能原因

根据日志信息,判断为mmap地址失败。可能原因:

(1)用户程序编译选项中启动了地址消毒(-lasan):asan地址消毒会预留所有的虚拟地址空间,而svm在mmap时也需要预留8T的地址空间,二者冲突,所以mmap时会失败。

(2)用户预留地址与SVM模块预留地址相同。

处理步骤

  1. 关闭编译选项即可。
  2. 查看用户预留地址是否与SVM模块预留地址重叠,需要修改用户预留地址空间。