파일 제한 getrlimit(RLIMIT_NOFILE) 실패

파일 제한 getrlimit(RLIMIT_NOFILE) 실패

(32비트 시스템)

Q&A 게시됨열린 파일 제한이 소진되어 Chrome이 충돌하는 것과 관련된 이전 문제입니다.

이후 Chrome은 (한도를 늘린 후) 훨씬 더 원활하게 실행되었지만 여전히 때때로 충돌이 발생합니다.

충돌 보고서

충돌 보고서를 보면 다음과 유사한 내용이 반복해서 나타납니다.

SegvAnalysis:
 Segfault happened at: 0xb616c30f:  movl   $0x1337,0x0
 PC (0xb616c30f) ok
 source "$0x1337" ok
 destination "0x0" (0x00000000) not located in a known VMA region (needed writable region)!
 Stack memory exhausted (SP below stack segment)
SegvReason: writing NULL VMA

로그의 Watchdog 항목은 일반적으로 다음을 의미합니다.

... Watchdog[3100]: segfault at 0 ip b613437f sp af8e8cc0 error 6 in chrome[b20d5000+5689000]

충돌 파일 에는 /proc/[PID]/maps다음이 있습니다.

bfd58000-bfd78000 rwxp 00000000 00:00 0          [stack]

128K 스택은 어느 것입니까? ( 0xbfd78000 - 0xbfd58000 = 131072)

충돌 파일 에는 /proc/[PID]/status다음이 있습니다.

 FDSize:    1024

소프트 제한을 32K로 설정했지만.

하지만 이는 아이 등이 아니라 보고서에 포착된 과정을 위한 것이라고 추측된다.


한계 오류

이제 버전 40.0.2214.94의 최신 업데이트 이후 새로운 문제가 나타났습니다. 얼마 후(셸에서 크롬을 실행함) 중복된 항목이 있습니다.

getrlimit(RLIMIT_NOFILE) failed

다음과 같은 방법으로 파일 32768을 열 수 있는 제한을 설정했습니다.

ulimit -Sn 32768

계산 방법

빌드 및 재사용 등으로 인해 Chrome에서 실제로 몇 개의 파일을 여는 지 감지하기가 어렵지만 꽤 많은 파일을 사용하고 있는 것 같습니다. losof무엇이든 포함하되, 호기심에 몇 개의 (탐욕스러운) 항목이 추가되었는지 테스트해 보았습니다.

Chrome을 시작하기 전에 losf | wc -l약 55,000개의 라인이 생성되었습니다. FireFox가 열려 있고, 여러 창에 80개가 넘는 탭이 있고, 기타 여러 응용 프로그램이 있습니다.

Chrome을 시작한 후 lsof 개수가 높아집니다.

                      lsof | wc -l
Pre chrome         :  55,524
 1 window   1 tab  :  79,820
 1 window  15 tabs : 105,308
 2 windows 30 tabs : 141,076
 3 windows 40 tabs : 187,285

chrome(현재) 1개의 창 2개의 탭이 있는 프로세스 만 보시기 바랍니다 .

sudo lsof -a -p $(pgrep chrome | paste -sd "," -) | wc -l

4380을 제공합니다.


질문:

getrlimit내 질문은 이것이 버그(및/또는 SigSegv의 버그)와 관련이 있는지 여부입니다.

Chrome과 같은 애플리케이션에 대해 이 항목 수가 lsof정상적이거나 예상 됩니까?

내가 할 수 있는게 있습니까"고정시키다"실수 getrlimit?

소프트 한도를 높게 설정했기 때문일까요?

관련 정보