我用STM32运行RT-Thread nano3.13版本,其中使用了ulog组件,运行了十几个线程,很多线程使用了LOG_D,LOG_HEX打印,包括定时器,硬件中断中,现在遇到了诡异的问题:
产品运行几个小时后会出现死机状况,经过shell查看,原因是线程5没有释放ulog.output_locker这个互斥信号量,导致其它需要打印的线程全部挂起,包括ulog输出线程也挂起了,中断中打印是直接输出的,是可以输出的,其它没有打印的线程则运行正常,比如shell线程可以正常运行,其中线程5也就是调用了LOG_D,LOG_HEX打印了两条信息,在挂掉前这两条信息是有输出,此后这个互斥信号量一直被这个线程5占用了,线程5能够运行,其它有打印的前程全部挂起,我很困惑
有偿解决这个问题,希望大家指点,WX:18688455698
/××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××/
谢谢各位的回答
那个ISR是打开了的,现在最新的调试发现ulog打印完后调用的unlock函数中释放互斥信号量,出现释放失败的情况
这怎么可能会出现这种情况啊?
整个工程没有出现线程被其它线程挂起,或者是删除的情况