2014-10-17 2 views
1

/proc/<PID>/maps 파일을 읽으려고합니다. I ptrace(PTRACE_ATTACH, <PID>) 읽기 전에 (따라서 프로세스가 일시 중단 된 것으로 간주됩니다). 이 같은 모습을 읽어/proc/PID/maps를 읽는 동안 fgets가 무한 루프에 갇히다

코드 :

while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... } 

있지만 (무한 루프)을 종료 아니에요. 나는 printf line_buf을했고, 이미 읽은 행을 읽는 것으로 나타났습니다.

질문 : 내지도 파일을 변경하면 어떻게 될까요? (무엇이든 변경하는 경우)

파일이 다른 것으로 변경되지 않으면 fgets가 이미 읽은 행을 읽는 이유는 무엇입니까?

답변

1

지금 참조 할 수 없지만 특정 커널 버전의 알려진 버그/회귀입니다. 문제는 거의 확실하게 당신이 버그가있는 커널에서 돌아가고 있으며 덜 버그가있는 커널로 대체해야합니다. 문제 보고서에 대한 링크를 찾으면 추가 할 것입니다.

+0

좋아, 최신 커널'[alexandernst @ stupidbox 0s ~] $ uname -a 리눅스 stupidbox 3.16.4-1-ARCH # 1 SMP PREEMPT Mon Oct 6 08:22:27 CEST 2014 x86_64 GNU/Linux'를 사용하고 있지만 아직도 똑같이하고 있습니다. 버그가 패치 되었습니까? – alexandernst

+0

나는 확실히 그렇게 생각했다. 추적 할 때만 발생합니까? 아마도'ptrace'로 뭔가 잘못하고있는 것일 수도 있습니다. 또는 아마도 그것은 'ptrace'관련 버그입니다. –

+0

사실, 잊어 버렸습니다. – alexandernst

관련 문제