CDirScan función NextL plantea KERN-EXEC 0
Pregunta
CDirScan función NextL plantea "Principal de Pánico KERN-EXEC 0" si es que no se llama de inmediato SetScanDataL() (es decir,si es llamado, posteriormente, en el mismo objeto activo después de otro evento)
f1() - llamada dentro de los activos objeto de
iDirScan = CDirScan::NewLC(aFs);
iDirScan->SetScanDataL(aPath,
KEntryAttDir|KEntryAttMatchExclusive,
ESortNone, CDirScan::EScanDownTree);
//wait for some asynchronous event
f2() - llamada dentro de un mismo objeto activo, después de algunos asynchonous evento
CDir* dir = NULL;
TRAPD(error, iDirScan->NextL(dir)); -->> "Main Panic KERN-EXEC 0"
Si iDirScan->NextL() es llamado antes que a la espera de algún evento asincrónico, todo funciona bien.
Por qué CDirScan variable pierde su validez?Tenga en cuenta que el evento asincrónico no tiene nada que hacer, puede ser un simple maniquí temporizador.
Solución
Escribí un código de prueba en un intento de reproducir esto, pero no podía.
En general, KERN-EXEC 0
los pánicos son causadas en su mayoría por obsoletos R identificadores de objeto.Por ejemplo, asegúrese de que el RFs
mango de pasar a CDirScan
no se cierra demasiado temprano.
Otros consejos
Podría publicar más de su código para analizar?
¿Esto dos partes del código están en diferentes funciones f1, f2, o ambos están en una función f1, esto no está claro para mí?
Además, si iDirScan es parte de su clase no se debe dejar en función de pila de limpieza (NewLC).