Утечка памяти в Perl LWP с использованием HTTPS

Я думаю, что я обнаружил утечку памяти с LWP при подключении через HTTPS. При использовании следующего сценария использование памяти постоянно увеличивается:

use LWP::UserAgent;

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(GET=>'https://www.google.com/');
while (1) {
  $response = $ua->request($request);
  sleep(1);
}

Этот другой скрипт не имеет проблем:

use LWP::UserAgent;

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(GET=>'http://www.google.com/'); # https => http
while (1) {
  $response = $ua->request($request);
  sleep(1);
}

Perl 5.12.3 / LWP 5.837 / Crypt:: SSLeay 0.58 / Mac OS X 10.7.4

Кто-нибудь знает способ обойти это?


ОБНОВИТЬ

Perl 5.12.4 / LWP 6.05 / Crypt::SSLeay 0.64 / Mac OS X 10.8.4

Утечка памяти все еще существует при подключении через HTTPS. Чтобы попробовать это, запустите образец сценария на терминале и посмотрите, как увеличивается и увеличивается объем памяти с помощью Activity Monitor.


ОБНОВИТЬ

После некоторого тестирования я обнаружил, что с недавним обновлением моих библиотек все еще остается утечка памяти, но это происходит только при вызове определенных адресов по HTTPS. В приведенном выше примере я звонил по https://www.google.com/, и это один из этих адресов. Например, этот код не дает мне утечек памяти:

use LWP::UserAgent;

$ua = LWP::UserAgent->new();
$request = HTTP::Request->new(GET=>'https://twitter.com/'); # www.google.com => twitter.com
while (1) {
  $response = $ua->request($request);
  sleep(1);
}


ОБНОВИТЬ

Я сообщил об ошибке, и некоторые другие подтвердили мои выводы: https://rt.cpan.org/Ticket/Display.html?id=88287

2 ответа

Решение

В Linux с Perl 5.10, Crypt 0.58, Lwp 6.02 использование памяти постоянно. Попробуйте обновить ваши Perl-модули до последней.

Если проблема все еще существует, создайте билет RT для этой проблемы, и обслуживание этого модуля устранит утечку.

С Уважением,

По крайней мере для меня кажется, что вы можете обойти эту проблему, отключив проверку имени хоста:

my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });

Очевидно, что это не рекомендуется, если безопасность важна для вашего приложения!

Другие вопросы по тегам