ulimit parece congelar o script bash

1

Estou executando um script básico que executa vários aplicativos pequenos com entradas diferentes. Alguns desses aplicativos têm bugs (por exemplo, nunca terminam) e, por isso, uso ulimit para obter a saída ou um erro de todos eles.

Em "pseudo-bash" é algo assim:

for app in $( find apps ); do
  for input in $( find inputs ); do 
    (
    ulimit -Sf 150 -St 1 -Sd 1024 -Sv 51200
    app < input
    )
    # handle output
  done 
done

Isso funciona bem para a maioria dos aplicativos e entradas (mais de 1.000 testes), no entanto, certos aplicativos com determinadas entradas (sempre iguais) têm problemas e congelam o script.

Eu testei isso manualmente e descobri que aqueles que congelam têm problemas (falha de segmentação). Mas isso deveria acontecer. Estou usando o ulimit com precisão para poder obter um erro e seguir em frente.

Exemplos de mensagem de erro:

*** glibc detected *** <app name>: malloc(): memory corruption (fast)  0x00000000022de2f1 ***

.

*** glibc detected *** <app name>: corrupted double-linked list: 0x0000000001cc3120 ***

.

*** glibc detected *** <app name>: free(): invalid size: 0x00000000017daf20 ***

Eu tentei isso em diferentes máquinas, versões gcc, versões linux. Eu recebo repetições, embora em diferentes pares de aplicativos e entradas.

Como posso descobrir o que está acontecendo e resolvê-lo? Ou estou fazendo algo errado?

    
por Fernando César 20.09.2015 / 13:54

0 respostas