Os limites de arquivo getrlimit (RLIMIT_NOFILE) falharam

2

(sistema de 32 bits)

Publicou um Q / A antes sobre falhas do Chrome devido ao limite esgotado em arquivos abertos.

O Chrome, desde então, é executado com mais fluidez (depois de aumentar o limite), mas ainda trava de tempos em tempos.

Relatórios de falhas

Olhando para os relatórios de falhas, repetidamente tem algo como:

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

As entradas do cão de guarda no log normalmente dizem:

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

De /proc/[PID]/maps no arquivo de falha existe:

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

que conclui a pilha de 128K? ( 0xbfd78000 - 0xbfd58000 = 131072 )

De /proc/[PID]/status no arquivo de falha existe:

 FDSize:    1024

embora eu tenha definido o limite para 32K.

Mas acho que isso é para o processo preso no relatório e não nas crianças, etc.

Limita o erro

Agora, após a atualização mais recente da versão 40.0.2214.94, há um novo problema. Depois de um tempo (estou executando o chrome do shell), há entradas repetidas de:

getrlimit(RLIMIT_NOFILE) failed

Eu defini limite para arquivos abertos 32768 por:

ulimit -Sn 32768

lsof contando

Acho difícil detectar quantos arquivos o Chrome realmente tem aberto devido à desova e reutilização etc. mas parece que está usando vários. losof inclui tudo, mas por curiosidade Fiz um teste para ver quantas entradas (gananciosas) foram adicionadas.

Antes de iniciar o Chrome, o losf | wc -l gerou cerca de 55 mil linhas. Isso foi com FireFox aberto segurando 80 + abas em várias janelas + um monte de outras aplicações.

Depois de iniciar o Chrome, a contagem de lsof está aumentando:

                      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

Tentando apenas ver os processos denominados chrome (now) com 1 janela 2 guias:

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

dá 4380.

Pergunta:

Minha pergunta é se isso poderia ter algo a ver com os erros getrlimit , (e / ou talvez os SigSegv's).

Essa quantidade de entradas em lsof normal / é esperada para um aplicativo como o Chrome?

Há algo que eu possa fazer para "corrigir" os erros getrlimit ?

É porque eu defini o limite suave como alto?

    
por user367890 31.01.2015 / 10:18

0 respostas