Я написал обработчик сигнала для отлова ошибок FPE. Мне нужно продолжить исполнение, даже если это произойдет. Я получаю ucontext_t в качестве параметра, я могу изменить неверный операнд с 0 на другое значение, но контекст FPU все еще плох, и я попадаю в бесконечный цикл?
Кто-то уже манипулирует структурой ucontext_t в Linux?
Я наконец нашел способ справиться с этими ситуациями, очистив флаг состояния ucontext_t следующим образом:
...
const long int cFPUStatusFlag = 0x3F;
aContext->uc_mcontext.fpregs->sw &= ~cFPUStatusFlag;
...
0x3F отрицается, чтобы поместить 0 в 6 битов регистра состояния FPU (x87). Это подразумевает проверку исключений FPE после расчета.