Функция CDirScan NextL вызывает "Main Panic KERN-EXEC 0", если она не вызывается сразу SetScanDataL() (т.е. если она вызывается позже в том же активном объекте после другого события)
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 теряет свою действительность? Обратите внимание, что асинхронное событие не имеет ничего общего, это может быть простой фиктивный таймер.