2015-12-31
今天调试代码的时候碰到BUS error的错误,发现只要调用pthread_mutex_lock(&dev_485[comn - 1].serial_mutex)这一句就会抛出这个错误,很奇怪,找不到问题的原因。
网上看了很多信息,说是对齐的问题,我的数据机构定义给了字节对齐的编译说明;又看了运算符的优先级,&符在这里没用错呀,不知道程序怎么就疯了。
尝试解决方案:
1、将dev_485对应数据结构不做字节对齐要求;
2、调用处修改为pthread_mutex_lock(&(dev_485[comn - 1].serial_mutex)),&后面加一个括号;
明天继续调试。
上面信息是凌晨写的,今天上班的时候试了下,果然取消字节对齐后,调用pthread_mutex_lock不会异常,真是奇怪,居然跟对齐扯上关系了,唉,又是多少青春消逝!!