munmap_chunk(): invalid pointer: 0x00007fffffffdbb0 ***
使用多线程进行stl中list类型进行删除操作时提示指针无效,查看指针0x00007fffffffdbb0 ,发现这个指针是pthread_mutex_lock里的锁,该指针无效。但是并不是每次运行都会出现这个错误,尝试找到触发条件,应该是和我写的太烂的多线程有关。
pthread_mutex_lock(&imu_lock_);
sensor_msgs::Imu imu0=imu_array.front();
imu_array.pop_front();
sensor_msgs::Imu imu1=imu_array.front();
imu_array.pop_front();
pthread_mutex_unlock(&imu_lock_);
查看里debug的记录,发现是释放ros里的imu.h里的header出现问题,显示指针无效,尝试查看赋值。
查看当前释放的list里的值,发现是一个错误的赋值,该值无效:
大致确认是多线程给list赋值和删除时,修改了容器的大小,导致list的指针错误,指向一个无效指针。
尝试查看所有与该list内存相关的线程,确认都加了线程锁。
尝试:扩大锁的范围,从确认list size开始就锁线程。暂时解决