游离信号量
游离信号量应该是Symbian使用AO时经常遇到的问题,E32USER-CBASE 46 panic,这个咚咚曾经也给我带来无穷的烦恼。
这里稍微总结下哪些行为可能会导致游离信号量。
1. 使用AO的类的析构函数没有调Cancel().
2. AO使用类的构造函数没有调用CActiveScheduler::Add().
3.发异步请求后没有调用SetActive().
4. 异步请求的服务端多次Complete.
原因千变万化,以上列举的肯定不全,仅作参考。
在处理游离信号量的时候,必须找出哪个AO发出的请求导致后面的游离信号量,最好的方式就是在所有的AO里打log,一个个的排除直道找出真凶。
还有一种方式是用Hooklogger,不过本人没经验,无法分享。