TCP no estado estabelecido com inode de 0

0

Intermitentemente, em um raspberry pi executando raspbian, vejo comportamento bizarro com (uma das várias) conexões TCP estabelecidas. O receptor tem o que ele acredita ser um soquete aberto válido obtido de aceitar. Ele está sentado em uma leitura () e pedindo um byte (em alguns casos, mais, mas eu vi isso no caso de um byte).

O remetente enviou dados. / proc / net / tcp mostra claramente o socket no estado Established (01), com uma contagem diferente de zero na fila de recebimento - e um inode de 0. O read () permanece bloqueado.

Isso acontece raramente e penso apenas em soquetes abertos por dias e semanas de cada vez. Ele afetou várias aplicações diferentes no mesmo raspberry pi 3B +; nem sempre é o mesmo código afetado. Não tenho certeza se a tomada começa danificada ou acaba dessa maneira ao longo do tempo; alguns desses soquetes são usados para o tráfego que acontece muito raramente.

Não consigo atrair a atenção para o problema nos fóruns do grosa; mas isso aconteceu várias vezes agora para mim. Eu estou procurando insights sobre como isso pode acontecer; o ideal é que alguém diga "ah, a implementação TCP deles esqueceu de esconder o cache depois de globbing o buffer snoid" ou algo assim. Alguém tem uma ideia de como isso é abordado?

Aqui está a linha relevante em / proc / net / tcp:

22: 8901A8C0:27D9 A701A8C0:ED1C 01 00000000:00000103:00000000 00000000 0 0 0 1 aa078c80 20 4 30 10 -1

Dados mais relevantes: Eu estava mexendo com cabos de energia e matei a energia para um interruptor que o pi em questão está ligado. Um dos soquetes acabou nesse estado inode = 0. A interrupção de energia foi breve e uma conexão TCP provavelmente teria navegado diretamente por ela sem perceber, porque nenhum byte estava sendo enviado no soquete naquele momento. Mas sinto que isso está de alguma forma relacionado.

    
por user15001 07.11.2018 / 03:48

0 respostas

Tags