Вчера неожиданно решил проблему: программа собранная на PC под linux(x64) иногда (~3% случаев) падала в sigfault при выгрузке на сервер.
Это была побочная проблема, т.к. на железном девайсе проблема не проявлялась, но меня сильно напрягала морально (Стоит сказать, что пару недель назад боролся с Hard fault уже на девайсе).
Отладчик показывал испорченые указатели в самописном алокаторе памяти. "Классика жанра" думал я - выход за пределы массива.
Для поиска, в алокаторе сделал функцию конроля диапазона, которую повставлял в библиотечные memset, memcpy, snprintf и т.п.
В общем - моя ловушка так и не сработала. И да - проблема "ушла" сама собой ... до вчерашнего дня.
Нашел случайно - вылет случился под отладчиком и я увидел ...
int *dst = va_arg(ap,int *);
if(dst != NULL)
{
*dst = (int) f.data; <<<< Вылет
В общем -
... = parse_args(cmd, "isii", NULL, NULL, NULL, &cid)) ...
одно лишнее 'i' кот случайно добавил месяц назад... Но в этот раз звезды позволили мне его найти.
(Прототип int parse_args(const char *src, const char *format, int *count, ...);)
PS.
Посмотрел в git что этот баг существовал с момента написания модуля - 4 года