![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
Здравствуйте!
При запуске вот такого кода:
выдается следующая ошибка: Yes (in cleanup) Can't call method "_put_session" on an undefined value at /usr/local/lib64/perl5/AnyEvent/Handle.pm line 2163 during global destruction. Подскажите пожайлуста, в чем может быть проблема? |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
tls контекст отсутствует, как я понимаю.
посмотреите, как реализовано в AnyEvent::TLS. |
|||
|
||||
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
Попробовал так реализовать, не получилось
|
|||
|
||||
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
Может быть проблема в том, что рекомендуемая версия Net::SSLeay 1.35, а у меня 1.55?
AnyEvent::TLS
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
не думаю.
|
|||
|
||||
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
Проблему решил - не нужно использовать ключ -w в первой строке. Лучше писать use warnings;
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
мусор под ковёр? неплохо, неплохо
|
|||
|
||||
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
не совсем так - здесь особенность работы с глобальными деструкторами в Perl.
Вот что написал Marc Lehmann по этому поводу: First of all, you are using -w. This switch forces a set of warnings on every piece of code, even code that doesn't want or need those warnings. If you run with -w, and you get warnings, you have to deal with them: the original aithor did not enable them, so when you do, you effectively take over maintainership. So netter don't run with -w if you don't want to deal with warnings in other people's code. Second, this is a bug in perl - during global destruction, perl can randomly corrupt data structures, which sometimes causes messages like these. Это поведение документировано: Global Destruction , поэтому это не баг, а фича |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
slavenk, больше похоже на особенность некоторых разработчиков сваливать вину на всех, кроме себя. Тут явная ошибка в коде. Можно ее исправить, а можно сделать вид, что ее нет
P.S. пару лет назад имел "удовольствие" пообщаться с Марком по поводу ошибок в AnyEvent, после этого пользуюсь чистым EV. Это сообщение отредактировал(а) ginnie - 31.7.2013, 15:21 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
"You should check that a contained object is defined before calling a method on it"
и $self->{tls_ctx}->_put_session (delete $self->{tls}) if $self->{tls} > 0; не сочетается. А в связи с индивидуальными особенностями лехмана, вряд-ли будет пофиксена в ближайшем будущем. |
|||
|
||||
| slavenk |
|
|||
|
TheAthlete ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 22.10.2009 Репутация: нет Всего: нет |
||||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
А я и не говорил, что модулями Марка не стоит пользоваться. В EV я ошибок пока не нашел, поэтому пользуюсь. Я писал про особенности общения с ним, а также про его желание что-либо исправлять. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Кстати, ошибка не такая уж и безобидная, насколько я понимаю, после нее уже остальные деструкторы в коде не вызываются.
Был неправ:
Это сообщение отредактировал(а) ginnie - 31.7.2013, 16:14 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |