Re: падение мастер процесса
Polonevich Ivan
loverjoni на gmail.com
Ср Май 16 11:01:18 UTC 2012
PS
в модуле выполняется только операция ngx_shared_memory_add т.е. только
выделяется память. slab_allocator не используется. мутексы не создаются
и не лочатся, возможно начиная с версии 1.2 это теперь обязательно
необходимо делать после выделения блока шаред памяти.
On 5/16/12 1:56 PM, Polonevich Ivan wrote:
> С коллегами сделали такие выводы:
>
> в функции ngx_shmtx_force_unlock выполняется операция atomic_cmp_set
> без предварительной проверки инициализирован ли mtx->lock или нет. Таким
> образом если модуль выделил шаред память классическим способом но не
> использовал mutex локи для этого блока то они остаются
> неинициализрованными и при операции unlock_mutexes вызываемой по команде
> reload мы получаем segmetation_fault. добавил проверку на то
> инициализирован ли вообще mtx-lock, это снимает проблему. Насколько это
> корректно или надо править модуль. Ниже диф:
> [root на build-server nginx-1.3.0]# [root на build-server d]# diff ngx_shmtx.c
> ngx_shmtx_patched.c
> 154c154
> < if (ngx_atomic_cmp_set(mtx->lock, pid, 0)) {
> ---
>> if (mtx->lock ? ngx_atomic_cmp_set(mtx->lock, pid, 0): 0) {
> On 5/11/12 1:14 PM, Ivan Palanevich wrote:
>> Вероятно вы правы.
>>
>> http://code.google.com/p/ustats/issues/detail?id=5
>>
>> On May 11, 2012, at 10:22 AM, Maxim Dounin wrote:
>>
>>> Hello!
>>>
>>> On Thu, May 10, 2012 at 08:36:06PM +0300, Ivan Palanevich wrote:
>>>
>>>> Заметил, что падает мастер процесс при отправке -HUP,
>>>>
>>>> cat /etc/redhat-release
>>>> CentOS release 5.8 (Final)
>>>>
>>>> Linux server 2.6.18-308.4.1.el5 #1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
>>>>
>>>> nginx -V
>>>> nginx version: nginx/1.2.0
>>>> built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)
>>>> TLS SNI support enabled
>>>> configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-openssl=/home/mockbuild/rpmbuild/BUILD/nginx-1.2.0/openssl-0.9.8t/ --with-openssl-opt=enable-tlsext --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-http_geoip_module --with-debug --with-ipv6 --with-file-aio --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --add-module=/home/mockbuild/rpmbuild/BUILD/nginx-1.2.0/nginx-upstream-fair --add-module=/home/mockbuild/rpmbuild/BUILD/nginx-1.2.0/mod_ustats
>>>>
>>>> Из последних добавленных модификаций
>>>> --with-openssl=/home/mockbuild/rpmbuild/BUILD/nginx-1.2.0/openssl-0.9.8t/
>>>>
>>>> Началось до 1.2.0 , но с какой точно версии не помню.
>>> [...]
>>>
>>>> Подскажите куда покапать.
>>> Начать с простого: собраться без сторонних модулей и патчей, и
>>> попробовать воспроизвести проблему без них. Я подозреваю, что
>>> проблема где-то в районе ustats.
>>>
>>> Maxim Dounin
>>>
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru на nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
--
Signed, Polonevich Ivan
System Administrator
CООО Гейм Стрим / Wargaming.net
http://www.wargaming.net/
http://www.game-stream.org/
icq 8158401
Skype jonilover
Подробная информация о списке рассылки nginx-ru