После обновления сервера с Debian 7.8 до версии 8.2 (64-разрядной) обновление Apache (до версии 2.4.10) привело к очень странной ошибке: случайные символы новой строки в error_log.
Пример:
[Mon Nov 16 13:29:54.388526 2015] [cgi:error] [pid 9122] [client xx.xx.xx.xx:1865] AH01215: (Fred, Test) Warning: foo.cgi/Foo.pm::foo():115 "Argument "test" isn't numeric i, referer: http://…
[Mon Nov 16 13:29:54.390770 2015] [cgi:error] [pid 9122] [client xx.xx.xx.xx:1865] AH01215: n numeric eq (==)" [GET http://…], referer: http://…
Здесь предупреждение CGI разделено на слово «in».
Положение в строке, где добавляется разрыв строки, является случайным, и эффект применяется к случайным строкам. Вполне нормально видеть несколько экземпляров одной и той же ошибки в строке (например, ошибка, возникающая в цикле), причем только одна из этих строк затронута случайным разрывом строки.
Текст записывается в журнал ошибок с помощью команды «скажем, STDERR sprintf (…)», которая полностью работала без происшествий в предыдущей версии Debian / Apache / Perl (в настоящее время Apache 2.4 и Perl 5.20.2).
Неужели я единственный в мире столкнулся с таким странным явлением? :)
Редактировать: Я начинаю подозревать, что проблема возникает всякий раз, когда несколько строк выводятся из сценария CGI в STDERR одновременно, то есть возникает какая-то граница буфера… просто мысль.