Home
friends [entries|archive|friends|userinfo]
Visit http://iiftb.com

[ website | iiftb.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Memory leaks [Dec. 18th, 2009|09:04 pm]

ru_perl

[kiba_da_fucka]
Здравствуйте!

Вот такая проблема. Есть некий сетевой сервис, который должен работать долго, анализируя данные. Использую Sniffer::HTTP, который кормлю eth-пакетами, и он разбирает TCP-поток и request-ы и response-ы. Но проблема в том, что где-то в модуле, похоже, есть утечка памяти - когда сессия удаляется, то ли ее буферы не очищаются, то ли еще референсы на данные сесси хранятся где-то внутри модуля.

С наскоку определить где это там не получилось, а времени разобраться в чужом коде нет. Попытался использовать Devel::Size и Deve::Size::Fast, чтобы понять, какие стуктуры растут, но он или валит в кору приложение, или оно перестает работать в pcap-части, то есть не снифает ничего :)

По совету автора модуля попытался использовать Devel::Cycle, и не могу понять его вывод - на что нужно обращать внимание? Он показывает кросс-референсы, получается, любое наличие кросс-референсов на сущности, которые не лежат внутри уничтожаемого объекта это проблема, и нужно разрывать их перед удалением объекта? Их там просто n  показывает, n>5 :)

Или посоветуйте, пожалуйста, другие библиотеки для TCP session reconstruction. С Net::libNIDS что-то тоже не так, или у меня руки кривые, но не осилил. Самому писать не предлагать, я так понимаю, это достаточно нетривиальная задача, как показывает опыт snort и wireshark. Можно, конечно, взять сторонние инструменты и анализировать уже готовые файлы, но это будет не так красиво, как хотелось бы.
link4 comments|post comment

Поможите с алгоритмом [Dec. 18th, 2009|11:28 am]

ru_perl

[kun99]
Нид хелп, такая задача:
Есть строка, к примеру "1 2 3" (кол-во элементов 2..N, предположительно не больше 4-5)
через permute получаем все варианты порядка, нужно еще все варианты склейки,
например, для примера:
12 3
1 23
123

сделать чтоб работало - не проблема, а чтоб быстро все варианты делало - идей нету
link4 comments|post comment

HTML::Template [Dec. 15th, 2009|03:58 pm]

ru_perl

[powervac]
Есть ли возможность вставлять в template-файл глобальные переменные ( например из $ENV ) ?
link9 comments|post comment

iterator-based permutator [Dec. 14th, 2009|08:29 pm]

ru_perl

[jamhed]
moar )
link12 comments|post comment

iterator class по мотивам hop [Dec. 14th, 2009|08:28 pm]

ru_perl

[jamhed]
package Iterator;
# this allows "value: $i" syntax // kind of blackjack
use overload
	q("") => sub { $_[0]->{value} },
	q(0+) => sub { $_[0]->{value} },
	fallback => 1;

sub new {
	my ($class, $iter) = @_;
	local *IT;
	my $self = {
		iter	=> $iter,
		value	=> undef,
		empty	=> 0,
	};
# this allows <$i> syntax
	tie *IT, $class, $self;
	my $bless = bless($self, $class);
# this allows $$i->kick() syntax // blackjack!
	*IT = \$bless;						
# this allows $i->() syntax // more blackjack!
	*IT = sub { $self->kick };		
	return *IT;						
}

sub TIEHANDLE {
	my ($class, $iter) = @_;
	bless($iter, $class);	
}

sub value		{ shift->{value} }
sub empty		{ shift->{empty} }
sub READLINE	{ shift->kick }

sub kick {
	my ($self) = @_;
# even more blackjack and hookers!
	local $_ = $self;
	$self->{value} = $self->{iter}->();
}

1;

moar... )
link23 comments|post comment

navigation
[ viewing | most recent entries ]

Advertisement