Ulimit, кажется, заморозить скрипт bash

308
Fernando César

Я запускаю скрипт bash, который запускает несколько небольших приложений с разными входами. Некоторые из этих приложений имеют ошибки (например, никогда не заканчивают), и поэтому я использую ulimit, чтобы получить вывод или ошибку от всех из них.

В «псевдо-баш» это как то так:

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 

Это хорошо работает для большинства приложений и входных данных (более 1000 тестов), однако некоторые приложения с определенными входными данными (всегда одинаковыми) имеют проблемы и замораживают сценарий.

Я проверил это вручную и обнаружил, что у тех, кто зависает, возникают проблемы (ошибка сегментации). Но это должно произойти. Я использую ulimit точно, чтобы я мог получить ошибку и двигаться дальше.

Примеры сообщения об ошибке:

*** 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 *** 

Я пробовал это на разных машинах, версиях gcc, версиях linux. Я получаю повторения, хотя в разных парах приложения и входов.

Как я могу узнать, что происходит и решить это? Или я что-то не так делаю?

1

0 ответов на вопрос

Похожие вопросы