При использовании apache2-mod_perl-2.0.5-alt2 совместно с apache2-2.2.22-alt1 при старте httpd2 (на этапе загрузки mod_perl) в /var/log/httpd2/error_log наблюдается следующая ошибка: Attempt to free unreferenced scalar: SV 0x8dff48, Perl interpreter: 0x8c08b0 during global destruction. При этом процессы httpd2 остаются запущенными, но наблюдаются следующие эффекты: 1. Невозможно получить статус httpd2: $ sudo -H service httpd2 status httpd2 is dead, but stale PID file exists 2. Невозможно штатно погасить демона: $ sudo -H service httpd2 stop Service httpd2 is not running. [PASSED] Хотя процессы запущены: $ sudo -H ps ax|fgrep httpd 16237 ? Ss 0:00 /usr/sbin/httpd2 16246 ? S 0:00 /usr/sbin/httpd2 16247 ? S 0:00 /usr/sbin/httpd2 16248 ? S 0:00 /usr/sbin/httpd2 16249 ? S 0:00 /usr/sbin/httpd2 16250 ? S 0:00 /usr/sbin/httpd2 16257 ? S 0:00 /usr/sbin/httpd2 3. Не работает killall (процессы по прежнему в памяти): $ sudo -H killall httpd2 httpd2: no process killed 4. Имя процесса в /proc/<pid>/stat и /proc/<pid>/comm (на ядрах его предоставляющих) отличается от имени процесса в /proc/<pid>/cmdline: $ cat /proc/$(pidof -s httpd2)/stat 16257 (/usr/sbin/httpd) S 16237 16237 16237 0 -1 4202816 262 0 0 0 0 0 0 0 20 0 1 0 277393376 245813248 2739 18446744073709551615 4194304 4638500 0 0 0 0 0 4096 134235883 18446744073709551615 0 0 17 0 0 0 0 0 0 (При этом файл /usr/sbin/httpd на данном хосте отсутствует.) $ cat /proc/$(pidof -s httpd2)/comm httpd $ cat /proc/$(pidof -s httpd2)/cmdline /usr/sbin/httpd2 При этом, комбинация из apache2-2.2.22-alt1 и apache2-mod_perl-2.0.4-alt1.1 данных проблем не вызывает. Гугление показало, что подобные проблемы (как минимум сообщение в логе при использовании mod_perl-2.0.5 собранным с perl-5.14) есть не только у нас, см.: 1. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650675 2. http://article.gmane.org/gmane.comp.apache.mod-perl.devel/9928
Судя по дате http://lists.altlinux.org/pipermail/sisyphus/2012-January/356606.html данная проблема первый раз выплыла когда в Сизифе был ещё apache2-2.2.21-alt1, но уже apache2-mod_perl-2.0.5-alt2.
К "Attempt to free unreferenced scalar" описанная проблема с запуском Apache2 + mod_perl (замена на этапе запуска mod_perl имени процесса httpd) отношения не имеет. В целом, есть подозрение, что и к mod_perl'у оно отношения не имеет, скорее к apr1 / apr1utils. И является следствием использования у нас в целях обеспечения совместной работы с Apache 1.3.x нестандартного имени процесса Apache 2.x - httpd2 . Просьба проверить - на текущих сборках apache2-base-2.2.22-alt11 / apache2-mod_perl-2.0.7-alt2 у меня оно воспроизводится перестало (без каких-либо изменений в mod_perl). Т.е., с включённым mod_perl service httpd2 start/stop/status выполняются без ошибок.
(В ответ на комментарий №2) > К "Attempt to free unreferenced scalar" описанная проблема с запуском > Apache2 + mod_perl (замена на этапе запуска mod_perl имени процесса httpd) > отношения не имеет. > > В целом, есть подозрение, что и к mod_perl'у оно отношения не имеет, скорее > к apr1 / apr1utils. И является следствием использования у нас в целях > обеспечения совместной работы с Apache 1.3.x нестандартного имени процесса > Apache 2.x - httpd2 . > > > Просьба проверить - на текущих сборках apache2-base-2.2.22-alt11 / > apache2-mod_perl-2.0.7-alt2 у меня оно воспроизводится перестало (без > каких-либо изменений в mod_perl). Т.е., с включённым mod_perl > service httpd2 start/stop/status > выполняются без ошибок. Нет, всё по-прежнему с apache2 2.2.22-alt11 (после a2dismod perl нормально запускается) Но никакого "Attempt to free unreferenced scalar" в логах нет.
*** Bug 28188 has been marked as a duplicate of this bug. ***
*** Bug 28220 has been marked as a duplicate of this bug. ***
Это не mod_perl, это сам Perl, которому в коммите 7636ea95 расширили функциональность: http://perl5.git.perl.org/perl.git/commit/7636ea95c5776293 В Sisyphus это изменение пришло с Perl 5.14.2. При задании $0 сейчас дополнительно вызывается prctl(PR_SET_NAME, ...), который изменяет имя текущего процесса на строку длиной не более 16 символов. У наших сборок Apache2 имя /usr/sbin/httpd2 чуть длинее. Соответственно, в t6: $ perl -e '$0="/usr/sbin/httpd2"; system "ps h $$;ps hc $$"' 12007 pts/1 S+ 0:00 /usr/sbin/httpd2 12007 pts/1 S+ 0:00 perl В Sisyphus: $ perl -e '$0="/usr/sbin/httpd2"; system "ps h $$;ps hc $$"' 13282 pts/1 S+ 0:00 /usr/sbin/httpd2 13282 pts/1 S+ 0:00 /usr/sbin/httpd
apache2-mod_perl-2.0.7-alt4 -> sisyphus: * Sun Dec 16 2012 Nikolay A. Fetisov <naf@altlinux> 2.0.7-alt4 - Disable changing the proctitle (Closes: #26892, #27924)