2009-12-07 1 views
0

CDirScan 함수 NextL이 바로 호출되지 않으면 "Main Panic KERN-EXEC 0"을 발생시킵니다. SetScanDataL() (나중에 다른 이벤트가 발생한 후 동일한 활성 개체 내에서 나중에 호출되는 경우)CDirScan 함수 NextL이 KERN-EXEC를 발생시킵니다. 0

F1은() - (+) 활성 객체 내에

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

F2라고 - 동일한 활성 개체 내에서 호출 일부 asynchonous 이벤트

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

후 iDirScan-> NextL()가 호출되면 비동기 이벤트를 기다리기 전에 모든 것이 잘 동작합니다.

왜 CDirScan 변수의 유효성이 느슨합니까? 비동기 이벤트에는 아무 것도 없으며 간단한 더미 타이머가 될 수 있습니다.

답변

2

이 코드를 재현하려고 시도했지만 테스트 코드를 작성했지만 할 수 없었습니다.

일반적으로 패닉은 부실 R 객체 핸들에 의해 발생합니다. 예를 들어 이 (가) CDirScan으로 전달되는 처리가 너무 일찍 종료되지 않았는지 확인합니다.

+0

사실입니다. 고마워, laalto. –

0

분석 할 코드를 더 게시 할 수 있습니까?

코드의 두 부분이 다른 함수에 있습니까? f1, f2 또는 둘 모두가 하나의 함수 f1에 있습니까? 이것은 명확하지 않습니다.

또한 iDirScan이 클래스의 일부인 경우 정리 스택 (NewLC) 기능으로 두지 마십시오.

+0

f1의 RF 세션을 실수로 파괴했습니다. 이것이 내 코드가 작동하지 않는 이유입니다. –

관련 문제