

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
5 messages in ru.sysoev.nginxRe: [dev] change in ngx_conf_merge_pt...| From | Sent On | Attachments |
|---|---|---|
| Manlio Perillo | Nov 24, 2007 9:25 am | |
| Igor Sysoev | Nov 24, 2007 9:43 am | |
| Manlio Perillo | Nov 24, 2007 10:29 am | |
| Manlio Perillo | Nov 25, 2007 9:20 am | |
| Manlio Perillo | Nov 25, 2007 9:48 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: [dev] change in ngx_conf_merge_ptr_value for 0.5.33 | Actions... |
|---|---|---|
| From: | Manlio Perillo (manl...@public.gmane.org) | |
| Date: | Nov 25, 2007 9:20:56 am | |
| List: | ru.sysoev.nginx | |
Igor Sysoev ha scritto:
On Sat, Nov 24, 2007 at 06:26:02PM +0100, Manlio Perillo wrote:
Igor, do you have made some changes in the ngx_conf_merge_ptr_value function?
In mod_wsgi I have: ngx_conf_merge_ptr_value(conf->callable_object, prev->callable_object, "application");
for directive wsgi_application_callable.
With 0.5.32 and 0.6.16, when the directive is not supplied, its value is "application".
With 0.5.33 it is NULL.
conf->callable_object is a char *.
Yes, it was changed (however, svn log says it was in 0.5.32 and 0.6.10):
#define ngx_conf_merge_ptr_value(conf, prev, default) \ - if (conf == NULL) { \ - conf = (prev == NULL) ? default : prev; \ + if (conf == NGX_CONF_UNSET_PTR) { \ + conf = (prev == NGX_CONF_UNSET_PTR) ? default : prev; \ }
There is somethig wrong, here. I'm using now 0.5.33.
In ngx_http_wsgi_create_loc_conf I set: wlcf->callable_object = NGX_CONF_UNSET_PTR;
and in ngx_http_wsgi_merge_loc_conf: ngx_conf_merge_ptr_value(conf->callable_object, prev->callable_object, "application");
When directive wsgi_callable_object is not defined, then it defaults to "application".
However if I define the directive in configuration file: location / { wsgi_alias /usr/local/nginx/nginx-simple.py; wsgi_callable_object application; }
I get a: 2007/11/25 18:07:08 [emerg] 19458#0: "wsgi_callable_object" directive is duplicate in nginx-simple.conf:51
To understand how this works, I have tested fastcgi_catch_stderr (not documented):
location /test { fastcgi_pass 127.0.0.1:9000; fastcgi_catch_stderr ops; }
but I get a segmentation fault:
(gdb) run -c nginx-simple.conf Starting program: /usr/local/nginx/sbin/nginx -c nginx-simple.conf Failed to read a valid object file image from memory. [Thread debugging using libthread_db enabled] [New Thread -1213540672 (LWP 19510)]
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1213540672 (LWP 19510)] ngx_array_push (a=0xffffffff) at src/core/ngx_array.c:59 59 if (a->nelts == a->nalloc) { (gdb) bt #0 ngx_array_push (a=0xffffffff) at src/core/ngx_array.c:59 #1 0x08058761 in ngx_conf_set_str_array_slot (cf=0xbf83df4c, cmd=0x80ac618, conf=0x80cead4) at src/core/ngx_conf_file.c:935 #2 0x08059715 in ngx_conf_parse (cf=0xbf83df4c, filename=0x0) at src/core/ngx_conf_file.c:336 #3 0x0806b7f7 in ngx_http_core_location (cf=0xbf83df4c, cmd=0x80a7aac, dummy=0x80ccf34) at src/http/ngx_http_core_module.c:1915 #4 0x08059715 in ngx_conf_parse (cf=0xbf83df4c, filename=0x0) at src/core/ngx_conf_file.c:336 #5 0x0806ba25 in ngx_http_core_server (cf=0xbf83df4c, cmd=0x80a79b0, dummy=0x80c31f0) at src/http/ngx_http_core_module.c:1706 #6 0x08059715 in ngx_conf_parse (cf=0xbf83df4c, filename=0x0) at src/core/ngx_conf_file.c:336 #7 0x080682c1 in ngx_http_block (cf=0xbf83df4c, cmd=0x80a77e0, conf=0x80c2cd8) at src/http/ngx_http.c:218 #8 0x08059715 in ngx_conf_parse (cf=0xbf83df4c, filename=0x80c263c) at src/core/ngx_conf_file.c:336 #9 0x080571df in ngx_init_cycle (old_cycle=0xbf83dfbc) at src/core/ngx_cycle.c:216 #10 0x0804d8b9 in main (argc=3, argv=0xbf83e104) at src/core/nginx.c:291
So this seems a bug in the NGX_CONF_UNSET_PTR / ngx_conf_merge_ptr_value logic.
Thanks Manlio Perillo







