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
|