Антикварные перловые грабли
Nov. 18th, 2010 11:57 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вчера на пару с коллегой раскопали антикварные перловые грабли:
Коллега написал демона который должен был висеть на заданном порту и отвечать... Не будучи демонизированным демон работал совершенно штатно, отвечая на тестовые запросы. Но будучи демонизированным работать отказывался ссылаясь на ошибку внутри utf8_heavy.pl. На этом этапе к работе приступил я, как наименее загруженный. Путем добавления тестового ввода была локализована строка которая генерила ошибку. Строкой оказался банальный tr///; только с русскими, и как следствие, уникодными буквами внутри... В результате более подробного гугления выяснилось что у перла 5.8.8 есть особенность реализации, которая приводит к таким ошибкам при выполнении операции tr/// с уникодными буквами, в случае если процесс работает в thread'е
http://rt.perl.org/rt3/Public/Bug/Display.html?id=41124
По результатам Net::Daemon'у при создании было дополнительно сказано mode=>'fork' и все заработало.
Прекрасные антикварные грабли!
Коллега написал демона который должен был висеть на заданном порту и отвечать... Не будучи демонизированным демон работал совершенно штатно, отвечая на тестовые запросы. Но будучи демонизированным работать отказывался ссылаясь на ошибку внутри utf8_heavy.pl. На этом этапе к работе приступил я, как наименее загруженный. Путем добавления тестового ввода была локализована строка которая генерила ошибку. Строкой оказался банальный tr///; только с русскими, и как следствие, уникодными буквами внутри... В результате более подробного гугления выяснилось что у перла 5.8.8 есть особенность реализации, которая приводит к таким ошибкам при выполнении операции tr/// с уникодными буквами, в случае если процесс работает в thread'е
http://rt.perl.org/rt3/Public/Bug/Display.html?id=41124
По результатам Net::Daemon'у при создании было дополнительно сказано mode=>'fork' и все заработало.
Прекрасные антикварные грабли!
no subject
Date: 2010-11-18 09:27 am (UTC)