Код
program test_err;
uses sysutils; // для работы try... except
var a, b : double;
begin
repeat
try
readLn(a, b);
writeLn(a / b) // Попытка выполнить деление. А делить будем на ноль...
except
writeLn('Err found!!!')
end;
until false
end.
Вот такая программа ловит ошибку ровно один раз. На второй раз валится...
Код
$ fpc test_err.pas -S2 // Компилируем в режиме совместимости с ObjectPascal
$ ./test_err
2 0
Err found!!!
2 0
Floating point exception
Самое интересное, что на домашнем компьютере (SuSE 9.0 ядро 2.4.<что-то-из-последних> или на любом компе с Win*) работает. Но стабильно падает на SuSE 9.1 (ядро 2.6.5). Компилятор в обоих случаях - fpc 1.0.10
Еще более интересный факт: берем программу, скомпилированную и стабильно работающую "дома" и тащим на этот компьютер. Валится.
Берем программу, скомпилированную на этом "глючном" компе, тащим домой. Работает.
От библиотек зависеть, по идее, не должно - библиотеки линкуются статически
Код
$ ldd ./test_err
not a dynamic executable
Кто-нибудь может предположить, в чем проблема?
У кого стоит linux ядер 2.6, прогоните, пожалуйста, эту программу!