HI,
Я запускаю apache 2.2.3 на Oracle64-bit (клон Red Hat), и у меня возникает проблема с кирпичной стеной.У меня есть программа, которая использует MIME :: Lite для отправки почты через sendmail (я извиняюсь, не уверен, какие версии sendmail или mod_perl я использую, хотя я верю, что часть sendmail не имеет значения, как вы увидите через мгновение)
Иногда apache вызывает segfault (11) и копается вглубь модуля MIME :: Lite, я вижу, что он находится в следующей строке:
open SENDMAIL, "|$sendmailcmd" or Carp::croak "open |$sendmailcmd: $!\n"; (this is in MIME::Lite)
Теперь можно автоматическиподозреваю sendmail, но если я сделал ту же строку для использования / bin / cat (как показано):
open SENDMAIL, "|/bin/cat"
apache все еще segfaults.
Я прикрепил strace к процессам apache и вижуследующее: (когда это НЕ происходит сбой)
12907 write(2, "SENDMAIL send_by_sendmail 1\n", 28) = 28
12907 write(2, "SENDMAIL /usr/lib/sendmail -t -o"..., 40) = 40
12907 pipe([24, 26]) = 0
12907 pipe([28, 29]) = 0
12907 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b4bcbbd75d0) = 13186
Обратите внимание, что "SENDMAIL sent_by_sendmail" - мои комментарии.Вы можете ясно видеть открытие труб.Когда он аварийно завершает работу, вы увидите следующее:
10805 write(2, "SENDMAIL send_by_sendmail (for y"..., 40) = 40
10805 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
Теперь обратите внимание, что он никогда не транслируется.Я попробовал GDB, и он мне ничего не показал.
Наконец, я написал простую программу для запуска через mod_perl и обычный cgi:
print header();
print "test";
open SENDMAIL, "|/bin/cat" or Carp::croak "open |sendmailcmd: $!\n";
print SENDMAIL "foodaddy";
close SENDMAIL;
print "test done <br/>";
Под mod_perl он успешносбой.
Мой анализ говорит мне, что это связано с попыткой открыть дескриптор файла, функция конвейера возвращает либо ложный, либо поврежденный дескриптор файла.
Я также увеличил дескриптор файлаограничение до 2048, без кубиков.
У кого-нибудь есть мысли о том, куда мне смотреть?Есть мысли?
Я ценю помощь