Приветствую. 
Очень непонятная проблема. 
Буду благодарен если натолкнете на мысль. 
  my %params = (
               lang => ru,
               host => \'localhost\',
               port => PORT,
               @_);
  my $len = length($word);
  my $sock = IO::Socket::INET->new(
                                   PeerAddr => $params{\'host\'},
                                   PeerPort =>  $params{\'port\'},
                                   Proto    => \'tcp\');
  unless ($sock) {
       err2log( $errh . "Can not connect !");
     return $word;
  }
  print $sock \'CLIL\' .    $param{\'lang\'} . pack(\'i\', $len) .  $word; 
  my @result;
  my $answer;
  while (read($sock, $answer, SIZE_OF_SIZE_T), $len=unpack(\'i\',$answer)) {
    read($sock,$word,$len);
    push @result,$word;
  }
  return @result ? $result[0] : $word;
Если кратко, то это предоставление программе spelld (mnogosearch), работающей в виде демона, слова для его морфологического анализа и поиска  родственных словоформ. 
На обоих машинах стоит Linux  (RH Enterprise 3).  
На той на которой Intel 32bit - код отрабатывает нормально. 
Там где AMD64 -  все отвисает на чтении из сокета (выявил после тщательной отладки): 
 
read($sock, $answer, SIZE_OF_SIZE_T) 
этот  вызов ничего не возвращает (причем даже undef), и ничего не кладет в $answer
то есть на ней просто виснет скрипт, и висит  пока процесс апач не вывалится в тайм-аут 
В чем может быть причина? 
Куда рыть?
В  логах этого spelld ничего нет, и вообще непонятно как дальше проводить дебаг. Скомпилился он на AMD64 нормально, без проблем.