recvmsg retorna 'EAGAIN (Recurso temporariamente indisponível)'

8

Após uma recente mudança do servidor, estamos solucionando esse problema estranho de um servidor perdendo conectividade n / w sem nenhum motivo aparente e recuperando a conectividade em alguns segundos ou minutos. Não há vestígios disso em /var/log/messages dmesg ou mcelogs. Ao tentar depurar isso, emiti strace ping google.com e ele diz = -1 EAGAIN (Resource temporarily unavailable) .

Alguém poderia esclarecer o que esta mensagem poderia significar? ping resolve o google.com, mas não mostrará nenhuma resposta como se as respostas do ping estivessem definidas para rejeitar no firewall.

sendmsg(3, {msg_name(16)={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("74.125.131.113")}, msg_iov(1)=[{"
sendmsg(3, {msg_name(16)={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("74.125.131.113")}, msg_iov(1)=[{"%pre%051?i%pre%v1lT%pre%%pre%%pre%%pre%51%pre%%pre%%pre%%pre%%pre%"..., 64}], msg_controllen=0, msg_flags=0}, 0) = 64
recvmsg(3, 0x7fffd48b9cc0, 0)           = -1 EAGAIN (Resource temporarily unavailable)
051?i%pre%v1lT%pre%%pre%%pre%%pre%51%pre%%pre%%pre%%pre%%pre%"..., 64}], msg_controllen=0, msg_flags=0}, 0) = 64 recvmsg(3, 0x7fffd48b9cc0, 0) = -1 EAGAIN (Resource temporarily unavailable)

P.S: essa é uma VM VMware e executa o RHEL 6.5

    
por Sree 19.11.2014 / 17:21

2 respostas

9

Quando você lê um soquete (ou pipe ou outra fonte assíncrona), pode escolher o que acontece se não houver dados imediatamente disponíveis. Ou você pode ter a leitura esperada até que alguns dados cheguem (modo de bloqueio), ou você pode fazer com que ela retorne imediatamente com um erro (modo não bloqueador).

O erro que ele retorna no segundo caso é EAGAIN .

Portanto, o erro EAGAIN não está realmente dizendo nada a você. Significa apenas que não havia nada para que recvmsg() recebesse naquele momento.

    
por 20.11.2014 / 00:50
-1

Eu estava recebendo este erro tentando ler stdin enquanto não havia stdin , por exemplo isTTY era falso.

    
por 14.05.2019 / 05:02