_select.S: No such file or directory.
(gdb) bt
#0 _select () at _select.S:3
#1 0x00000008005ffdd2 in __thr_select (numfds=64, readfds=0x80252c5c0, writefds=0x80252c5d0, exceptfds=0x0, timeout=0x7fffffffe210) at /usr/src/lib/libthr/thread/thr_syscalls.c:495
#2 0x0000000808ad4aa1 in ?? () from /usr/local/lib/perl5/site_perl/mach/5.32/auto/EV/EV.so
#3 0x0000000808ad0c92 in ?? () from /usr/local/lib/perl5/site_perl/mach/5.32/auto/EV/EV.so
#4 0x0000000808abd528 in ?? () from /usr/local/lib/perl5/site_perl/mach/5.32/auto/EV/EV.so
#5 0x00000008005051bc in Perl_pp_entersub () from /usr/local/lib/perl5/5.32/mach/CORE/libperl.so.5.32
#6 0x00000008004fa5e6 in Perl_runops_standard () from /usr/local/lib/perl5/5.32/mach/CORE/libperl.so.5.32
#7 0x000000080045f30d in ?? () from /usr/local/lib/perl5/5.32/mach/CORE/libperl.so.5.32
#8 0x000000080045f191 in perl_run () from /usr/local/lib/perl5/5.32/mach/CORE/libperl.so.5.32
#9 0x0000000000202060 in main ()
и почему эта дрянь не выходит обратно в AnyEvent?
Тут надо сравнить это с тем, что я показал из ev.so, скорее всего оно сматчится 1 к 1; ну и понять что за селект вызван, все его аргументы распринти, посмотри какой реально он просил таймаут. Как ты понимаешь, что он висит и не возвращается? ptrace? В кернелевой коре можно понять что происходит в ядре в этот момент, есть ли вообще такие fd, которые в сетах
зачем мне корка ядра, если у меня на фре procstat дескрипторы показывает :) и я видел, что там просто нет inet-сокета, так что он скорее всего возвращается по таймауту, но бестолку, неоткуда читать же... а вот почему код метода start не добавил дескриптор, хз sub start { my $self = shift; my $aeh; $self->_state('connecting'); if (defined $self->{_proxy}) { AE::log info => "using proxy %s:%d", map { $self->{_proxy}{$_} } qw/addr port/; $aeh = AnyEvent::Handle->new( connect => [ map{ $self->{_proxy}{$_}} qw/addr port/ ], on_connect_error => sub { $self->_fatal("Connection error") }, on_connect => sub { my $socks = AnyEventSocks->new( hd => $aeh, login => $self->{_proxy}{user}, password => $self->{_proxy}{pass}, cb => sub { $self->_mt($aeh) } ); $socks->connect( map{ $self->{_dc}{$_} } qw/addr port/ ); } ); } else { AE::log info => "not using proxy: %s:%d", map{ $self->{_dc}{$_}} qw/addr port/; $aeh = AnyEvent::Handle->new( connect => [ map{ $self->{_dc}{$_}} qw/addr port/ ], on_connect_error => sub { $self->_fatal("Connection error") }, on_connect => sub { $self->_mt($aeh) } ); } }
А ты уверен, что он перевызывался, когда новый сокет появился?
Обсуждают сегодня