Welcome! Log In Create A New Profile

Advanced

Re: Re[2]: http_push_module

Maxim Dounin
January 27, 2010 07:00AM
Hello!

On Wed, Jan 27, 2010 at 01:36:01PM +0300, pyromaniac - wrote:

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

Потому что вы выделяете память под стуктуру ngx_str_t, а не под собственно
данные. А в структуре ngx_str_t data - это указатель на данные,
который вы используете неинициализировав.

Вообще говоря - вам повезло что он 0. Мог бы показывать
куда-нибудь на реальную память процесса, и вы бы её своим кодом
переписали. Последствия дальше могут быть любые.

Maxim Dounin

> Александре, а где можно почитать про ngx_shmtx_lock? Что это за зверь такой?
> Он лочит тред, насколько я понимаю?
>
> 27 января 2010 г. 12:34 пользователь Alexandre Kalendarev
> <akalend@mail.ru>написал:
>
> >
> > > Господа, тут такая оказия приключилась:
> > >
> > > 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 = ngx_palloc(ngx_http_push_pool, 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
> > =%d url_variable->data=%d , len\n" ,url->data, url_variable->data, len);
> > должно помочь
> > если валится на этом логе, значить либо url=NULL либо url_variable = NULL,
> > по этому я делаю так:
> > if ( url )
> > ngx_log_error( ... выводим данные)
> > else
> > ngx_log_error( ... выводим сообщение url=NULL)
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://nginx.org/mailman/listinfo/nginx-ru
> >

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


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

http_push_module

pyromaniac January 26, 2010 04:17AM

Re: http_push_module

akalend January 26, 2010 07:04AM

Re: http_push_module

Peter Leonov January 26, 2010 07:40AM

Re: http_push_module

pyromaniac January 26, 2010 12:00PM

Re: http_push_module

pyromaniac January 27, 2010 04:04AM

Re[2]: http_push_module

akalend January 27, 2010 04:36AM

Re: Re[2]: http_push_module

pyromaniac January 27, 2010 05:38AM

Re[4]: http_push_module

akalend January 27, 2010 06:16AM

Re: Re[2]: http_push_module

Maxim Dounin January 27, 2010 07:00AM

Re: Re[2]: http_push_module

pyromaniac January 27, 2010 10:22AM

Re[4]: http_push_module

Pavel V. January 28, 2010 12:50PM

Re: Re[4]: http_push_module

pyromaniac January 28, 2010 01:28PM

Re: Re[4]: http_push_module

pyromaniac January 28, 2010 01:40PM

Re[6]: http_push_module

akalend January 28, 2010 05:46PM

Re: Re[6]: http_push_module

Sergey Shepelev January 28, 2010 06:04PM

Re[8]: http_push_module

akalend January 29, 2010 02:46AM

Re: Re[8]: http_push_module

pyromaniac January 29, 2010 03:08AM

Re: Re[8]: http_push_module

pyromaniac February 01, 2010 01:12PM

Re: Re[4]: http_push_module

Peter Leonov January 29, 2010 12:14AM

Re: Re[4]: http_push_module

pyromaniac January 29, 2010 01:22AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 298
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready