ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[2]: http_push_module


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Re[2]: http_push_module
  • From: pyromaniac - <kinwizard@xxxxxxxxx>
  • Date: Wed, 27 Jan 2010 13:36:01 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:content-type; bh=KSfoD7dvvSndrnX1UwXMk4eOw5/zkk9wwrdU6sRYbgo=; b=eDxIXFj15HtmAmtukfd/wKwEzTkmXggy/orzbsZpBBUh/qH4/xGDkdoJ8xggR1zzrt 7Y63L/TZgu9vU6PEpGemvx4Jd0RwKKHbP3wqsmQ+xiwnQOhwrTHv+TLeGFGYA5Sfuynv zpWOxwWMVo39dPpSlJJwrXxO/IDX3M0ZG2moc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=S8WbFTCiPmDdbohPtUbKpzx0cBtTAydbkt7kqte3Zwtd/7Yypx8YgcuIVrtVT4yJ1t h5CFOVu/mITv6f1qhkTWECPO9C4PFwOf+ROjHJ4p/MhBIn9oiUU20lIXo7RffJ+sd0wH zWJu+nc/XRuvCmig7kgHI2vkLPjYUzNBLY7l0=
  • In-reply-to: <E1Na4Hz-0007ED-00.akalend-mail-ru@xxxxxxxxxxxx>
  • References: <47d6686c1001270102y121de843t50c7268cfd1194a1@xxxxxxxxxxxxxx> <E1Na4Hz-0007ED-00.akalend-mail-ru@xxxxxxxxxxxx>

В общем, url->data = 0 Из-за этого и падает. Не понятно, почему ngx_palloc не срабатывает. Использование r->pool вместо ngx_http_push_pool даёт возможность 1 раз вывести информацию, на второй раз падает с теми же симптомами.
Александре, а где можно почитать про ngx_shmtx_lock? Что это за зверь такой? Он лочит тред, насколько я понимаю?

27 января 2010 г. 12:34 пользователь Alexandre Kalendarev <akalend@xxxxxxx> написал:

> Господа, тут такая оказия приключилась:
>
> static void ngx_http_push_send_request(ngx_http_request_t *r,
> ngx_http_variable_value_t *url_variable) {
>     if (url_variable != NULL && url_variable->not_found != 1 &&
> url_variable->len != 0) {
>         ngx_str_t   *url;
>         ngx_int_t   len = url_variable->len;
>         if ((url = "" sizeof(*url) + len)) !=
> NULL) {
>             url->len = len;
>             ngx_memcpy(url->data, url_variable->data, len);
>
>             ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0, "переход на
> %s", (char *) url->data);
>         } else {
>             ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "push module:
> unable to allocate memory for $subscribe_url or $unsubscribe_url string");
>         }
>         ngx_pfree(ngx_http_push_pool, url);
>     }
> }
>
> Падает это всё дело на ngx_memcpy(url->data, url_variable->data, len); с
> worker process exited on signal 11 и я понять не могу, почему. Может,
> кто-нибудь подскажет?

[quote]
On POSIX-compliant platforms, SIGSEGV is the signal sent to a process when it makes an invalid memory reference, or segmentation fault. The symbolic constant for SIGSEGV is defined in the header file signal.h. Symbolic signal names are used because signal numbers can vary across platforms; in practice it is usually signal #11.[1]
[/quote]

1) включаешь опцию --debug
2) запускаешь в конфигурации
worker_process 1;
master_process off;
daemon_off;
3) запускаешь  dbg nginx
и ловишь segmentation fault далее backtrace определяешь, где валится

сделай лог:  ngx_log_error( NGX_LOG_DEBUG, r->connection->log, "url->data ="" url_variable->data="" , len\n" ,url->data, url_variable->data, len); должно помочь
если валится на этом логе, значить либо url="" либо url_variable = NULL,
по этому я делаю так:
if ( url )
 ngx_log_error( ... выводим данные)
else
 ngx_log_error( ... выводим сообщение url="">









_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.