如果未立即调用CDirScan函数NextL,则立即引发“ Main Panic KERN-EXEC 0”(即,如果稍后在另一个事件之后在同一活动对象中调用它)

f1()-在活动对象中调用

iDirScan = CDirScan::NewLC(aFs);
iDirScan->SetScanDataL(aPath,
    KEntryAttDir|KEntryAttMatchExclusive,
    ESortNone, CDirScan::EScanDownTree);
//wait for some asynchronous event


f2()-在某些异步事件之后在同一活动对象中调用

CDir* dir = NULL;
TRAPD(error, iDirScan->NextL(dir)); -->> "Main Panic KERN-EXEC 0"


如果在等待某些异步事件之前调用iDirScan-> NextL(),则一切正常。

为什么CDirScan变量失去其有效性?注意异步事件无关,它可以是一个简单的虚拟计时器。

最佳答案

我编写了一些测试代码以尝试重现此代码,但未能成功。

通常,KERN-EXEC 0恐慌通常是由过时的R对象句柄引起的。例如,确保传递给RFsCDirScan句柄没有太早关闭。

关于c++ - CDirScan函数NextL引发KERN-EXEC 0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1857458/

10-13 05:34