Код автором изначально пишется на чистом Си в линуксе.
Под FreeBSD код нормально компилируется через gmake.
Проблема возникает на системах FreeBSD после длительного исполнения программы (примерно на 3-4-5 сутки непрерывной работы):
Код: Выделить всё
305 2^2 5 2.3^2 1783^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 304070255 / 400706238 (1038534.88s)
305 2^2 5 2.3^2 1787^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 207220755 / 398914373 (1039134.81s)
305 2^2 5 2.3^2 1789^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 111454353 / 398022945 (1039734.71s)
305 2^2 5 2.3^2 1801^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 15741483 / 392736589 (1039915.66s)
305 2^2 5 2.3^2 1801^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 315552297 / 392736589 (1039915.66s)
305 2^2 5 2.3^2 1811^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 226404572 / 388411330 (1039915.66s)
305 2^2 5 2.3^2 1823^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 138234794 / 383314680 (1039915.66s)
305 2^2 5 2.3^2 1831^2 2^5 3.7^2 2.5^2 . 2^2.3 11 2: 55430952 / 379972443 (1039915.66s)
Ссылка приведенная ниже показывает на участок кода и дана мне разработчиком.
https://github.com/hvds/divrep/blob/master/coul.c#L193
По его мнению в этом месте какая-то проблема, хотя на Линуксе таких проблем у него нет.
Известно, что компиляция через Cygwin для Виндовс нормально собирает программу.
И вроде тоже никто не жалуется на подобную проблему.
Похоже, что это проблема платформенная, т.е. конкретно на FreeBSD.
По моему мнению:
либо не совсем правильно вычисляется базис для отсчета времени работы программы,
либо принципиально не правильно производится подсчет времени работы программы,
либо еще что-то.
Изменения в код, по этой проблеме, разработчиком вносились уже не однократно.
Есть приамбула проблемы.
Первичные изменения для нормальной сборки под FreeBSD были сделаны:
https://github.com/hvds/divrep/commit/6 ... c7d55eba5d
Потом обнаружена проблема в том, что происходила заморозка вывода как на экран, так и в файл, при этом работа программы НЕ прекращалась.
И основной результат работы программы, в конце концов, записывался в файл и выводился на экран, хоть и с не верным временем.
Потом разработчик увеличил "разрядность/размер" переменной в два раза, программа стала работать в нормально, но только в два раза дольше "да момента заморозки".
Изменения здесь https://github.com/hvds/divrep/commit/0 ... f4108ea76d
После очередной длительной работы фриз повторился, на большей величине.
Снова разработчик переписал код приведя его к текущему значению https://github.com/hvds/divrep/blob/master/coul.c#L193
Я при этом не разработчик, язык Си не знаю, и нужных знаний у меня не хватает, да и корректно описать это по английски проблема для меня.
У меня есть последний ответ по этой проблеме от разработчика, но он пока не может понять, что происходит.
Можете подсказать направление поиска проблемы?
Или что, возможно, архитектурно не правильно в коде?