<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Спасибо.<br>
<br>
А я, наивно, перенес создание $multi с главного процесса в дочернии.<br>
И кажется ошибка ушла. Но, наверно, стала реже, и я ее пока не словил.<br>
Верну как было, и попробую явный base.</blockquote><div><br></div><div>А как вы "убиваете" дочерние процессы? Если не убиваете, или убиваете "насмерть" (без ловушек SIGTERM/SIGINT), то глобальный деструктор дочернего процесса просто не срабатывает.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Спасибо за ссылку.<br>
Но я еще не смотрел в сторону moose и пока не все понимаю.<br>
<br>
<br>
А почему в<br>
<a href="https://metacpan.org/source/SYP/AnyEvent-Net-Curl-Queued-0.037/lib/AnyEvent/Net/Curl/Queued/Multi.pm" target="_blank">https://metacpan.org/source/SYP/AnyEvent-Net-Curl-Queued-0.037/lib/AnyEvent/Net/Curl/Queued/Multi.pm</a><br>


строка 168 используется<br>
$self->socket_action;<br>
а не<br>
$self->socket_action(Net::Curl::Multi::CURL_SOCKET_TIMEOUT);<br>
Кажется в документации на libcurl сказано, что надо использовать второй вариант.<br></blockquote><div><br></div><div>В случае таймаута, совершенно верно. Но в данном случае, socket_action() вызывается при "запуске" инстанции Net::Curl::Easy, и выполняет функцию, так сказать, "прогревки движка" (асинхронный DNS, подключение к прокси).</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
А почему вы решили использовать Curl, а не AnyEvent::HTTP?<br></blockquote><div><br></div><div>У libcurl фичей побольше: <a href="http://curl.haxx.se/docs/features.html">http://curl.haxx.se/docs/features.html</a> :)</div>

<div class="gmail_quote">Лично мне позарез нужны были вот эти:</div><br> - custom least download speed acceptable<br> - selectable network interface for outgoing traffic</div><div class="gmail_quote"> - socks5 support</div>

<div class="gmail_quote"> - asynchronous name resolving</div><div class="gmail_quote"><div class="gmail_quote"> - Content-Encoding support for deflate and gzip</div><div class="gmail_quote"> - "Transfer-Encoding: chunked" support for "uploads"</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Что-то я не пойму как вы берете последнии хедеры, а не редиректовские.<br></blockquote><div><br></div><div>В режиме CURLOPT_FOLLOWLOCATION, libcurl "склеивает" хедеры. Поскольку HTTP-хедеры заканчиваются "\n\n", то нечто вроде split(/\n\n/, $buffer) превращает всю цепочку редиректов в аррей. Ну и последний элемент является последним хедером.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
И почему вы при получении хедеров, если это не html, не обрываете закачку?<br></blockquote><div><br></div><div>А как же тогда картинки качать? :)</div><div><div><br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


А удобно пользоваться moose? Так выгдядит странно, не так, как в книжке по Perl, что я читал.<br></blockquote><div><br></div><div>Весьма удобно, рекомендую!</div><div>Это не совсем Moose, это Mouse. Оно кушает на порядок меньше памяти.</div>

<div>(вообще-то Any::Moose, который сам выбирает Moose или Mouse в зависимости от случая)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
________________________________<br>
From: Stanislaw Pusep <<a href="mailto:creaktive@gmail.com">creaktive@gmail.com</a>><br>
To: Moscow.pm group <<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>><br>
Sent: Tuesday, 27 November 2012, 13:55<br>
Subject: Re: [Moscow.pm] Attempt to free unreferenced scalar: SV 0x2929db2c during global destruction<br>
<div><div class="h5"><br>
<br>
Так и есть, бага. Я её и зарепортил, и починил: <a href="https://github.com/sparky/perl-Net-Curl/pull/1" target="_blank">https://github.com/sparky/perl-Net-Curl/pull/1</a><br>
Жду, когда автор соизволит протестить :)<br>
Кстати, легко чинимо самостоятельно. В вашем коде, определите явный "base" для создания новых объектов Net::Curl::*:<br>
<br>
my $easy = Net::Curl::Easy->new({});<br>
my $multi = Net::Curl::Multi->new({});<br>
<br>
my $share = Net::Curl::Share->new({});<br>
<br>
<br>
Вместо:<br>
<br>
my $easy = Net::Curl::Easy->new;<br>
my $multi = Net::Curl::Multi->new;<br>
<br>
my $share = Net::Curl::Share->new;<br>
<br>
<br>
Почему оно так? Тупо опечатка:<br>
<a href="http://stackoverflow.com/a/13576436/1818793" target="_blank">http://stackoverflow.com/a/13576436/1818793</a><br>
<br>
Кстати, комбинация AnyEvent + Net::Curl::Mulii уже существует на CPAN:<br>
<a href="https://metacpan.org/module/AnyEvent::Net::Curl::Queued" target="_blank">https://metacpan.org/module/AnyEvent::Net::Curl::Queued</a><br>
<br>
2012/11/27 Alexandr Alexeev <<a href="mailto:afiskon@gmail.com">afiskon@gmail.com</a>><br>
<br>
Я не специалист, но похоже на багу в Net::Curl::Multy. Может, зарепортить ее?<br>
><br>
>2012/11/27 ksvs <<a href="mailto:ksvs1996@ymail.com">ksvs1996@ymail.com</a>>:<br>
><br>
>> Привет.<br>
>> Заменил LWP на AnyEvent, теперь захотел заменить его на Net::Curl::Multy.<br>
>> Но периодически при завершении программы стали появляться сообщения:<br>
>> "Attempt to free unreferenced scalar: SV 0x2929db2c during global destruction"<br>
>> Хотя с заменой на Curl у меня не добавилось никаких глобальных переменных.<br>
>> Что это может быть и как с ним бороться?<br>
>><br>
>><br>
>> Нашел, что можно пересобрать perl.<br>
>><br>
>> Recompiling libperl with DEBUG_LEAKING_SCALARS, (and maybe<br>
>> DEBUG_LEAKING_SCALARS_FORK_DUMP and maybe DEBUG_LEAKING_SCALARS_ABORT) may<br>
>> give you some more information about where the problem is coming from.<br>
>><br>
>> А может можно как-то проше?<br>
>><br>
>> --<br>
>> Moscow.pm mailing list<br>
>> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
><br>
><br>
>--<br>
>Best regards,<br>
>Alex Alexeev<br>
><a href="http://twitter.com/afiskon" target="_blank">http://twitter.com/afiskon</a><br>
><br>
>--<br>
>Moscow.pm mailing list<br>
><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
<br>
--<br>
Moscow.pm mailing list<br>
</div></div><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a>А почему в а не<br>
<div class="HOEnZb"><div class="h5">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br>