Por que meu aplicativo está em estado interrompível?

2

Estou executando no Ubuntu 10.04 LTS Server um aplicativo GTK que costumava funcionar bem. De repente, começou a ficar em estado interrompível (Sl +) sem nenhum motivo aparente. Aqui está um trecho da string:

poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}])
writev(5, [{"
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}])
writev(5, [{"%pre%40%pre%%pre%@%pre%%pre%%pre%0%pre%%pre%40%pre%%pre%@%pre%%pre%%pre%0%pre%"..., 192}, {NULL, 0}, {"", 0}], 3) = 192
read(5, 0x2ba9ac4, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
40%pre%%pre%@%pre%%pre%%pre%0%pre%%pre%40%pre%%pre%@%pre%%pre%%pre%0%pre%"..., 192}, {NULL, 0}, {"", 0}], 3) = 192 read(5, 0x2ba9ac4, 4096) = -1 EAGAIN (Resource temporarily unavailable)

Eu pesquisei essa linha read(5, 0x2ba9ac4, 4096) , o que parece ser mais significativo, e parece que muitos outros aplicativos tendem a ter o mesmo problema. Tentei reiniciar meu servidor X, mas isso não ajudou.

Você tem uma ideia de como resolver esse problema?

    
por Greg 04.03.2011 / 14:45

1 resposta

4

Ele está tentando ler um soquete e está aguardando a resposta do servidor. Você pode não ter um tempo limite para o soquete ou sua Internet pode não estar totalmente funcional ou o servidor de destino pode estar fazendo com que você espere sem resposta.

De qualquer forma, esse é um problema para os desenvolvedores do programa resolverem, eles precisam garantir que todas as suas leituras tenham tempos limites e erros e talvez tentem novamente. A menos que os desenvolvedores tenham analisado o problema e determinado que seja um problema de biblioteca upstream ou um problema de empacotamento downstream.

    
por Martin Owens -doctormo- 28.09.2011 / 15:01