[Moscow.pm] Attempt to free unreferenced scalar: SV 0x2929db2c during global destruction

ksvs ksvs1996 на ymail.com
Вт Ноя 27 04:57:27 PST 2012



Спасибо.

А я, наивно, перенес создание $multi с главного процесса в дочернии.
И кажется ошибка ушла. Но, наверно, стала реже, и я ее пока не словил.
Верну как было, и попробую явный base.


Спасибо за ссылку.
Но я еще не смотрел в сторону moose и пока не все понимаю.


А почему в
https://metacpan.org/source/SYP/AnyEvent-Net-Curl-Queued-0.037/lib/AnyEvent/Net/Curl/Queued/Multi.pm
строка 168 используется 
$self->socket_action;
а не
$self->socket_action(Net::Curl::Multi::CURL_SOCKET_TIMEOUT);
Кажется в документации на libcurl сказано, что надо использовать второй вариант.

А почему вы решили использовать Curl, а не AnyEvent::HTTP?

Что-то я не пойму как вы берете последнии хедеры, а не редиректовские.
И почему вы при получении хедеров, если это не html, не обрываете закачку?

А удобно пользоваться moose? Так выгдядит странно, не так, как в книжке по Perl, что я читал.

________________________________
From: Stanislaw Pusep <creaktive на gmail.com>
To: Moscow.pm group <moscow-pm на pm.org> 
Sent: Tuesday, 27 November 2012, 13:55
Subject: Re: [Moscow.pm] Attempt to free unreferenced scalar: SV 0x2929db2c during global destruction


Так и есть, бага. Я её и зарепортил, и починил: https://github.com/sparky/perl-Net-Curl/pull/1
Жду, когда автор соизволит протестить :)
Кстати, легко чинимо самостоятельно. В вашем коде, определите явный "base" для создания новых объектов Net::Curl::*:

my $easy = Net::Curl::Easy->new({});
my $multi = Net::Curl::Multi->new({});

my $share = Net::Curl::Share->new({});


Вместо:

my $easy = Net::Curl::Easy->new;
my $multi = Net::Curl::Multi->new;

my $share = Net::Curl::Share->new;


Почему оно так? Тупо опечатка:
http://stackoverflow.com/a/13576436/1818793

Кстати, комбинация AnyEvent + Net::Curl::Mulii уже существует на CPAN:
https://metacpan.org/module/AnyEvent::Net::Curl::Queued

2012/11/27 Alexandr Alexeev <afiskon на gmail.com>

Я не специалист, но похоже на багу в Net::Curl::Multy. Может, зарепортить ее?
>
>2012/11/27 ksvs <ksvs1996 на ymail.com>:
>
>> Привет.
>> Заменил LWP на AnyEvent, теперь захотел заменить его на Net::Curl::Multy.
>> Но периодически при завершении программы стали появляться сообщения:
>> "Attempt to free unreferenced scalar: SV 0x2929db2c during global destruction"
>> Хотя с заменой на Curl у меня не добавилось никаких глобальных переменных.
>> Что это может быть и как с ним бороться?
>>
>>
>> Нашел, что можно пересобрать perl.
>>
>> Recompiling libperl with DEBUG_LEAKING_SCALARS, (and maybe
>> DEBUG_LEAKING_SCALARS_FORK_DUMP and maybe DEBUG_LEAKING_SCALARS_ABORT) may
>> give you some more information about where the problem is coming from.
>>
>> А может можно как-то проше?
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
>--
>Best regards,
>Alex Alexeev
>http://twitter.com/afiskon
>
>--
>Moscow.pm mailing list
>moscow-pm на pm.org | http://moscow.pm.org
>

-- 
Moscow.pm mailing list
moscow-pm на pm.org | http://moscow.pm.orgА почему в а не 


Подробная информация о списке рассылки Moscow-pm