ПРОЕКТЫ 


  АРХИВ 


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: nginx worker process 3964 exited on signal 11



Hello!

On Mon, Feb 22, 2010 at 12:58:34AM +0300, Igor Sysoev wrote:

> On Mon, Feb 22, 2010 at 12:45:23AM +0300, Maxim Dounin wrote:
> 
> > Hello!
> > 
> > On Sun, Feb 21, 2010 at 02:33:25PM +0300, Peter Leonov wrote:
> > 
> > > On 21.02.2010, at 13:59, Igor Sysoev <igor@xxxxxxxxx> wrote:
> > > 
> > > >On Sun, Feb 21, 2010 at 01:48:36PM +0300, Дугин Сергей wrote:
> > > >
> > > >>Здравствуйте, .
> > > >>
> > > >>Как с этим бороться?
> > > >>
> > > >?
> > > >Вот что с людьми делает долгое и неконтроллируемое употребление
> > > >.htaccess/mod_rewite. Мозг перестаёт понимать, что существуют другие
> > > >методы решения задач:
> > > >
> > > >http://sysoev.ru/nginx/docs/http/ngx_http_geo_module.html
> > > >и
> > > >  if ($geo) {
> > > >      rewrite  ^  http://aaaaaaa.ru/bbbbb/cccccc/$uri  last;
> > > >  }
> > > 
> > > Это да :)
> > > 
> > > Но, ведь, и сегфолта быть не должно.
> > 
> > В 0.8.25+ его и не будет.
> 
> Почему ? Тут же не named captures.

Потому что в 0.8.25 ты переделал работу с regexp'ами, и 
pcre_exec() в новом коде зовётся с правильным размером ovecsize.

Проблема была вот в этом коде (ngx_http_script.c):

    if (code->ncaptures && r->captures == NULL) {

        r->captures = ngx_palloc(r->pool,
                                 (NGX_HTTP_MAX_CAPTURES + 1) * 3 * sizeof(int));
        if (r->captures == NULL) {
            e->ip = ngx_http_script_exit;
            e->status = NGX_HTTP_INTERNAL_SERVER_ERROR;
            return;
        }
    }

    rc = ngx_regex_exec(code->regex, &e->line, r->captures, code->ncaptures);

где code->ncaptures - количество captures в конкретном регулярном 
выражении (в оригинальном примере топикстартера - 132 штук), а 
место под r->captures выделяется под (NGX_HTTP_MAX_CAPTURES + 1) 
== 10 штук.

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.