Re: nginx застрял в sched_yield()

Maxim Dounin mdounin на mdounin.ru
Чт Мар 31 16:30:26 MSD 2011


Hello!

On Thu, Mar 31, 2011 at 04:44:41AM +0400, Denis F. Latypoff wrote:

> Здрасьте, наконец-то отловил его, уже такое бывало, но
> на продакшене, по этому не получалось бэктрейс глянуть, надо было
> быстро все починить. Проявляется при HUP'е:
> 
> (gdb) bt
> #0  0x0000003744abac77 in sched_yield () from /lib64/libc.so.6
> #1  0x0000000000413667 in ngx_spinlock (lock=0x2b1216ba3000, value=14637,
>     spin=1024) at src/core/ngx_spinlock.c:39

fr 1
p ngx_ncpu
p *lock

Последнее напечатает pid процесса, про него тоже желательно узнать 
подробности.

Можно ещё там же походить и убедиться, что оно на самом деле 
крутится в ngx_spinlock(), а не висит в sched_yield().

> #2  0x00000000004452ad in ngx_http_file_cache_expire (
>     data=<value optimized out>) at src/http/ngx_http_file_cache.c:1076
> #3  ngx_http_file_cache_manager (data=<value optimized out>)
>     at src/http/ngx_http_file_cache.c:1196
> #4  0x000000000041fdba in ngx_cache_manager_process_handler (ev=0x7ffff2bee870)
>     at src/os/unix/ngx_process_cycle.c:1346
> #5  0x000000000041a299 in ngx_event_expire_timers ()
>     at src/event/ngx_event_timer.c:149
> #6  0x000000000041a1c5 in ngx_process_events_and_timers (cycle=0x75f4fb0)
>     at src/event/ngx_event.c:261
> #7  0x0000000000420a88 in ngx_cache_manager_process_cycle (cycle=0x75f4fb0,
>     data=<value optimized out>) at src/os/unix/ngx_process_cycle.c:1328
> #8  0x000000000041e5c7 in ngx_spawn_process (cycle=0x75f4fb0,
>     proc=0x420919 <ngx_cache_manager_process_cycle>, data=0x67d400,
>     name=0x46803f "cache manager process", respawn=-4)
>     at src/os/unix/ngx_process.c:196
> #9  0x000000000041f21a in ngx_start_cache_manager_processes (cycle=0x75f4fb0,
>     respawn=1) at src/os/unix/ngx_process_cycle.c:398
> #10 0x00000000004207ee in ngx_master_process_cycle (cycle=0x75f4fb0)
>     at src/os/unix/ngx_process_cycle.c:251
> #11 0x0000000000406b8a in main (argc=12, argv=0x75c9ae9)
>     at src/core/nginx.c:405
> 
> Процесс пока не убиваю, сервер тестовый,
> если надо структурки посмотреть, то пожалуйста.
> 
> [root at gostats ~]# nginx -V
> nginx: nginx version: nginx/0.9.6
> nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)

Подозрительно знакомая версия gcc...

Ещё пожалуйста

disass ngx_spinlock
disass ngx_atomic_cmp_set

> nginx: TLS SNI support disabled
> nginx: configure arguments: --prefix=/opt/nginx --user=nobody --group=nobody --with-http_image_filter_module --with-http_stub_status_module --with-http_ssl_module --with-http_xslt_module --with-http_geoip_module
> 
> [root at gostats ~]# uname -a
> Linux gostats.org 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:20 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

Maxim Dounin



Подробная информация о списке рассылки nginx-ru