comparison src/os/unix/ngx_freebsd_rfork_thread.c @ 670:ad45b044f1e5 NGINX_1_1_19

nginx 1.1.19 *) Security: specially crafted mp4 file might allow to overwrite memory locations in a worker process if the ngx_http_mp4_module was used, potentially resulting in arbitrary code execution (CVE-2012-2089). Thanks to Matthew Daley. *) Bugfix: nginx/Windows might be terminated abnormally. Thanks to Vincent Lee. *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as "backup". *) Bugfix: the "allow" and "deny" directives might be inherited incorrectly if they were used with IPv6 addresses. *) Bugfix: the "modern_browser" and "ancient_browser" directives might be inherited incorrectly. *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC. *) Bugfix: in the ngx_http_mp4_module.
author Igor Sysoev <http://sysoev.ru>
date Thu, 12 Apr 2012 00:00:00 +0400
parents d0f7a625f27c
children
comparison
equal deleted inserted replaced
669:3f5d0be5ee74 670:ad45b044f1e5
9 #include <ngx_core.h> 9 #include <ngx_core.h>
10 10
11 /* 11 /*
12 * The threads implementation uses the rfork(RFPROC|RFTHREAD|RFMEM) syscall 12 * The threads implementation uses the rfork(RFPROC|RFTHREAD|RFMEM) syscall
13 * to create threads. All threads use the stacks of the same size mmap()ed 13 * to create threads. All threads use the stacks of the same size mmap()ed
14 * below the main stack. Thus the current thread id is determinated via 14 * below the main stack. Thus the current thread id is determined via
15 * the stack pointer value. 15 * the stack pointer value.
16 * 16 *
17 * The mutex implementation uses the ngx_atomic_cmp_set() operation 17 * The mutex implementation uses the ngx_atomic_cmp_set() operation
18 * to acquire a mutex and the SysV semaphore to wait on a mutex and to wake up 18 * to acquire a mutex and the SysV semaphore to wait on a mutex and to wake up
19 * the waiting threads. The light mutex does not use semaphore, so after 19 * the waiting threads. The light mutex does not use semaphore, so after
20 * spinning in the lock the thread calls sched_yield(). However the light 20 * spinning in the lock the thread calls sched_yield(). However the light
21 * mutecies are intended to be used with the "trylock" operation only. 21 * mutexes are intended to be used with the "trylock" operation only.
22 * The SysV semop() is a cheap syscall, particularly if it has little sembuf's 22 * The SysV semop() is a cheap syscall, particularly if it has little sembuf's
23 * and does not use SEM_UNDO. 23 * and does not use SEM_UNDO.
24 * 24 *
25 * The condition variable implementation uses the signal #64. 25 * The condition variable implementation uses the signal #64.
26 * The signal handler is SIG_IGN so the kill() is a cheap syscall. 26 * The signal handler is SIG_IGN so the kill() is a cheap syscall.