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.
This commit is contained in:
Maxim Dounin 2012-12-10 18:17:32 +00:00
parent 6bb2bf4cf6
commit 3428ae9ab1
2 changed files with 6 additions and 4 deletions

View File

@ -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)

View File

@ -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;
}