我正在工作线程上实例化 QSystemDeviceInfo,但它会导致段错误。
int BatteryInfo::getLevel() {
QSystemDeviceInfo sysDevInfo; //segfault happens when I step on to this line
return sysDevInfo.batteryLevel();
}
该类是线程安全的,还是问题出在其他地方?
编辑:通过进一步调试,我还注意到 native Symbian 也会调用段错误。
致以诚挚的问候
最佳答案
我和我的 friend 在 Symbian Qt Mobilty 1.0 上也发现了这个问题。他报告了一个问题QtMobility access from multiple threads 。正如问题描述中所述,认为这可能是由于首次创建 QSystemDeviceInfo/QSystemNetworkInfo 时创建了一些静态成员。。
如果您使用 Qt Mobility 1.2 或仅从一个线程访问 QSystemDeviceInfo,则会出现其他问题。
编辑:我们的一个解决方法是确保我们首先在主线程中创建一个 QSystemDeviceInfo 对象,但随后我们遇到了一些无法获取所有信号的问题。
关于Qt - 工作线程上神秘的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841611/