Mercurial > hg > nginx
changeset 5245:711fa02afae8
Valgrind: supressed complaints about uninitialized bytes.
Valgrind complains if we pass uninitialized memory to a syscall:
==36492== Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s)
==36492== at 0x6B5E6A: sendmsg (in /usr/lib/system/libsystem_kernel.dylib)
==36492== by 0x10004288E: ngx_signal_worker_processes (ngx_process_cycle.c:527)
==36492== by 0x1000417A7: ngx_master_process_cycle (ngx_process_cycle.c:203)
==36492== by 0x100001F10: main (nginx.c:410)
==36492== Address 0x7fff5fbff71c is on thread 1's stack
Even initialization of all members of the structure passed isn't enough, as
there is padding which still remains uninitialized and results in Valgrind
complaint. Note there is no real problem here as data from uninitialized
memory isn't used.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 05 Jun 2013 19:44:22 +0400 |
parents | 593d344999f5 |
children | b6562f98bfd8 |
files | src/http/ngx_http_file_cache.c src/os/unix/ngx_process_cycle.c |
diffstat | 2 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_file_cache.c Wed Jun 05 19:44:20 2013 +0400 +++ b/src/http/ngx_http_file_cache.c Wed Jun 05 19:44:22 2013 +0400 @@ -875,6 +875,8 @@ c = r->cache; + ngx_memzero(h, sizeof(ngx_http_file_cache_header_t)); + h->valid_sec = c->valid_sec; h->last_modified = c->last_modified; h->date = c->date;
--- a/src/os/unix/ngx_process_cycle.c Wed Jun 05 19:44:20 2013 +0400 +++ b/src/os/unix/ngx_process_cycle.c Wed Jun 05 19:44:22 2013 +0400 @@ -355,6 +355,8 @@ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "start worker processes"); + ngx_memzero(&ch, sizeof(ngx_channel_t)); + ch.command = NGX_CMD_OPEN_CHANNEL; for (i = 0; i < n; i++) { @@ -401,6 +403,8 @@ &ngx_cache_manager_ctx, "cache manager process", respawn ? NGX_PROCESS_JUST_RESPAWN : NGX_PROCESS_RESPAWN); + ngx_memzero(&ch, sizeof(ngx_channel_t)); + ch.command = NGX_CMD_OPEN_CHANNEL; ch.pid = ngx_processes[ngx_process_slot].pid; ch.slot = ngx_process_slot; @@ -460,6 +464,8 @@ ngx_err_t err; ngx_channel_t ch; + ngx_memzero(&ch, sizeof(ngx_channel_t)); + #if (NGX_BROKEN_SCM_RIGHTS) ch.command = 0; @@ -561,6 +567,8 @@ ngx_channel_t ch; ngx_core_conf_t *ccf; + ngx_memzero(&ch, sizeof(ngx_channel_t)); + ch.command = NGX_CMD_CLOSE_CHANNEL; ch.fd = -1;