Здравствуйте, skeptic, Вы писали:
S>new/delete не переопределяли?
S>Насколько я понимаю в nginx свои функции для управления памятью и юзать нужно их.
S>Ну и поподробней можно суть проблемы? А то не полнятно что вызываете и чего после этого корявится
Нет, new и delete родные c++. В модуль передается указатель ngx_http_request_t дальше из запроса выбирается заголовок и происходит определенная обработка. Вот код функции которая вызывается из nginx:
int request_handler(ngx_http_request_t * r)
{
try {
headers_t headers;
make_headers(r, headers);
boost::shared_ptr<RequestHandler> h(CreateRequestHandler(headers));
NginxRequestHandlerCallback cb(r);
h->HandleRequest(cb);
headers_t headers_out;
cb.SendResponseHeader(200, headers, true);
}
catch(std::exception & e)
{
NginxRequestHandlerCallback::SendErrorStatus(400, e.what(), r);
}
return 200;
}
После выхода из этой функции значение поля r->cleanup изменяется с 0 на 1. Видимо кто-то что-то там трет))) И потом, когда запрос очищается, вот здесь возникает попытка обратиться к неинициализированной памяти SIGSEG что-ли звучит
for (cln = r->cleanup; cln; cln = cln->next) {
if (cln->handler) {
cln->handler(cln->data);
}
}
Сейчас попробую память брать у nginx.