Qt - 工人线程上的神秘段错误

时间:2011-07-27 08:41:54

标签: qt segmentation-fault symbian qthread

我在工作线程上实例化QSystemDeviceInfo,但它会导致段错误。

int BatteryInfo::getLevel() {
   QSystemDeviceInfo sysDevInfo; //segfault happens when I step on to this line
   return sysDevInfo.batteryLevel();
}

该类是线程安全的,还是问题出在其他地方?

编辑:通过进一步调试,我也注意到原生Symbian也调用了段错误。

祝你好运

2 个答案:

答案 0 :(得分:3)

我和我的朋友在Symbian Qt Mobilty 1.0上也发现了这个问题。他报告了一个问题QtMobility access from multiple threads。正如它在问题描述中所说的那样认为这可能是因为第一次创建QSystemDeviceInfo / QSystemNetworkInfo时会创建一些静态成员。

如果您正在使用Qt Mobility 1.2或仅从一个线程访问QSystemDeviceInfo,则还有其他问题。

编辑:我们的一个解决方法是确保我们首先在主线程中创建了一个QSystemDeviceInfo对象,但后来我们遇到了一些没有获取所有信号的问题。

答案 1 :(得分:0)

你有能力设定吗? QSystemDeviceInfo需要'ReadDeviceData'功能。如果包含此功能,您需要在设备上签名以安装。