Erro ocasional do bash no AIX: chamada do sistema interrompida

1

Estou com problemas com a substituição de processos no bash no AIX Isso acontece muito raramente, aparentemente apenas quando o servidor é carregado.

Uma mensagem de erro de exemplo é:

line 9: /tmp//sh-np-7841523: Interrupted system call

Antes de investigar mais sobre o meu script, queria saber se você já tinha problemas com a substituição do processo. Ou obtenha suas informações sobre algumas recomendações possíveis para observar ao implementar a substituição do processo.

Observação: esse script simples pode gerar o erro mencionado acima:

#!/bin/bash
read var < <(echo)

No entanto, enfatizo este ponto: o erro é muito raro. Não pode ser reproduzido sistematicamente. O servidor no qual o script foi testado é um servidor de produção.

    
por Brat PID 27.11.2013 / 16:15

1 resposta

2

Verifique se você está usando a versão mais recente do bash. Se você é, relate um bug; Certifique-se de indicar exatamente onde você obteve o binário bash se você instalou um binário existente, ou qual configuração de compilador e tempo de compilação você usou e onde você obteve a fonte se você compilou bash sozinho. Mencione também sua versão exata do AIX e sua arquitetura de hardware. Mencione como reproduzir o bug, como você fez aqui, é claro.

"Interrupted system call" não é realmente um erro. É um status de erro ( EINTR ) que informa ao chamador que a chamada do sistema não foi executada (em vez de tentativa e falha). A maneira normal de o aplicativo lidar com EINTR é executar novamente a chamada do sistema, talvez depois de fazer algum outro processamento, como executar um manipulador de sinal. O EINTR existe para dar uma chance ao aplicativo executar tarefas urgentes enquanto ele está envolvido em uma chamada do sistema de bloqueio. Você pode ler Quando verificar EINTR e repetir a função chamar? e Use funções reentrantes para um manuseio de sinal mais seguro para mais leitura de fundo.

O Bash está vendo EINTR retornado por uma chamada do sistema em um local onde não esperava isso. Está relatando isso como um erro de maneira genérica. Este é um bug, possivelmente devido a um erro ou bug do sistema operacional.

    
por 27.11.2013 / 17:30