Bug 26892 - Не совпадает имя в списке процессов: /usr/sbin/httpd вместо httpd2
Summary: Не совпадает имя в списке процессов: /usr/sbin/httpd вместо httpd2
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apache2-mod_perl (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Nikolay A. Fetisov
QA Contact: qa-sisyphus
URL: http://lists.altlinux.org/pipermail/s...
Keywords:
: 28188 28220 (view as bug list)
Depends on:
Blocks: 27924
  Show dependency tree
 
Reported: 2012-02-04 23:03 MSK by solo
Modified: 2012-12-16 23:42 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description solo 2012-02-04 23:03:35 MSK
При использовании 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
Comment 1 solo 2012-02-07 23:32:30 MSK
  Судя по дате http://lists.altlinux.org/pipermail/sisyphus/2012-January/356606.html данная проблема первый раз выплыла когда в Сизифе был ещё apache2-2.2.21-alt1, но уже apache2-mod_perl-2.0.5-alt2.
Comment 2 Nikolay A. Fetisov 2012-11-06 16:04:46 MSK
К "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
выполняются без ошибок.
Comment 3 Vitaly Lipatov 2012-12-06 12:55:44 MSK
(В ответ на комментарий №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" в логах нет.
Comment 4 Vitaly Lipatov 2012-12-06 13:16:44 MSK
*** Bug 28188 has been marked as a duplicate of this bug. ***
Comment 5 Nikolay A. Fetisov 2012-12-13 18:22:19 MSK
*** Bug 28220 has been marked as a duplicate of this bug. ***
Comment 6 Nikolay A. Fetisov 2012-12-16 23:26:04 MSK
Это не 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
Comment 7 Repository Robot 2012-12-16 23:42:01 MSK
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)