Есть ли способ узнать, в какой функции / файле / строке установлено текущее значение ошибки?
Не то, что я знаю, это просто глобальный статический int (в нем нет магии) (см. Комментарий ниже).
Вы должны проверять каждую функцию, которая может установить ее, когда она возвращает ошибку.
К сожалению, не программно.
Просто мысль: если это проблема отладки, возможно, можно установить точку останова памяти по адресу, где хранится значение errno, и прервать его при записи в память. Затем стек вызовов скажет вам, кто это сделал.
errno