summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-12-10 18:17:32 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-12-10 18:17:32 +0000
commitf45e938b89d0ef3967bf95216bd3f63ef5e65429 (patch)
tree930fd2225383d88a3cee5000c4a2c576df918d14
parent59833d5450c8d9fa2c860b22e26813ea301cd514 (diff)
downloadnginx-f45e938b89d0ef3967bf95216bd3f63ef5e65429.tar.gz
nginx-f45e938b89d0ef3967bf95216bd3f63ef5e65429.tar.bz2
Merge of r4933, r4933: shared memory fixes.
*) Fixed location of debug message in ngx_shmtx_lock(). *) Core: don't reuse shared memory zone that changed ownership (ticket #210). nginx doesn't allow the same shared memory zone to be used for different purposes, but failed to check this on reconfiguration. If a shared memory zone was used for another purpose in the new configuration, nginx attempted to reuse it and crashed.
-rw-r--r--src/core/ngx_cycle.c4
-rw-r--r--src/core/ngx_shmtx.c6
2 files changed, 6 insertions, 4 deletions
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index f15372990..e8b155921 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -447,7 +447,9 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
continue;
}
- if (shm_zone[i].shm.size == oshm_zone[n].shm.size) {
+ if (shm_zone[i].tag == oshm_zone[n].tag
+ && shm_zone[i].shm.size == oshm_zone[n].shm.size)
+ {
shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
if (shm_zone[i].init(&shm_zone[i], oshm_zone[n].data)
diff --git a/src/core/ngx_shmtx.c b/src/core/ngx_shmtx.c
index 6cf7af58a..a62999f33 100644
--- a/src/core/ngx_shmtx.c
+++ b/src/core/ngx_shmtx.c
@@ -117,11 +117,11 @@ ngx_shmtx_lock(ngx_shmtx_t *mtx)
"sem_wait() failed while waiting on shmtx");
break;
}
-
- ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0,
- "shmtx awoke");
}
+ ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0,
+ "shmtx awoke");
+
continue;
}