DPDK 单进程时支持asan检测,但是多进程时,会出现内存地无法映射,内存地址映射不准确等问题,需调整dpdk代码,完成mmap映射:
eal_get_virtual_area:增加判断 若 传入地址不为空,则增加MAP_FIXED 参数:
if(requested_addr!=NULL)
{
reserve_flags|=EAL_RESERVE_FORCE_ADDRESS;
}
rte_eal_config_reattach 同样增加MAP_FIXED 参数:
mem_config = (struct rte_mem_config *) mmap(rte_mem_cfg_addr,
sizeof(*mem_config), PROT_READ | PROT_WRITE, MAP_SHARED|MAP_FIXED,
mem_cfg_fd, 0);