Mercurial > hg > nginx
annotate auto/cc/conf @ 3293:8abb88374c6c
Fix a bug introduced in r2032: After a child process has read a terminate
message from a channel, the process tries to read the channel again.
The kernel (at least FreeBSD) may preempt the process and sends a SIGIO
signal to a master process. The master process sends a new terminate message,
the kernel switches again to the the child process, and the child process
reads the messages instead of an EAGAIN error. And this may repeat over
and over. Being that the child process can not exit the cycle and test
the termination flag set by the message handler.
The fix disallow the master process to send a new terminate message on
SIGIO signal reception. It may send the message only on SIGALARM signal.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 04 Nov 2009 19:41:08 +0000 |
parents | 7af8276b1c2f |
children | b57a4a704f3c fe084c435dc3 |
rev | line source |
---|---|
455 | 1 |
2 # Copyright (C) Igor Sysoev | |
3 | |
4 | |
487 | 5 LINK="\$(CC)" |
6 | |
455 | 7 ngx_include_opt="-I " |
8 ngx_compile_opt="-c" | |
9 ngx_objout="-o " | |
10 ngx_binout="-o " | |
11 ngx_objext="o" | |
12 ngx_binext= | |
13 | |
573 | 14 ngx_long_start= |
15 ngx_long_end= | |
16 | |
455 | 17 ngx_regex_dirsep="\/" |
18 ngx_dirsep='/' | |
19 | |
20 ngx_regex_cont=' \\\ | |
21 ' | |
22 ngx_cont=' \ | |
23 ' | |
24 ngx_tab=' \ | |
25 ' | |
26 ngx_spacer= | |
27 | |
573 | 28 ngx_long_regex_cont=$ngx_regex_cont |
29 ngx_long_cont=$ngx_cont | |
30 | |
455 | 31 . auto/cc/name |
32 | |
33 if test -n "$CFLAGS"; then | |
34 | |
35 CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT" | |
36 | |
37 case $NGX_CC_NAME in | |
38 | |
39 ccc) | |
40 # Compaq C V6.5-207 | |
41 | |
42 ngx_include_opt="-I" | |
43 ;; | |
44 | |
45 esac | |
46 | |
47 else | |
48 | |
49 case $NGX_CC_NAME in | |
50 gcc) | |
515 | 51 # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2 |
52 # 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2 | |
561 | 53 # 4.0.0, 4.0.1, 4.1.0 |
455 | 54 |
55 . auto/cc/gcc | |
56 ;; | |
57 | |
58 icc) | |
515 | 59 # Intel C++ compiler 7.1, 8.0, 8.1 |
455 | 60 |
61 . auto/cc/icc | |
62 ;; | |
63 | |
561 | 64 sunc) |
65 # Sun C 5.7 Patch 117837-04 2005/05/11 | |
66 | |
67 . auto/cc/sunc | |
68 ;; | |
69 | |
467 | 70 ccc) |
515 | 71 # Compaq C V6.5-207 |
72 | |
73 . auto/cc/ccc | |
467 | 74 ;; |
455 | 75 |
515 | 76 acc) |
77 # aCC: HP ANSI C++ B3910B A.03.55.02 | |
78 | |
79 . auto/cc/acc | |
80 ;; | |
455 | 81 |
461 | 82 msvc*) |
83 # MSVC++ 6.0 SP2, MSVC++ Toolkit 2003 | |
455 | 84 |
85 . auto/cc/msvc | |
86 ;; | |
87 | |
88 owc) | |
89 # Open Watcom C 1.0, 1.2 | |
90 | |
91 . auto/cc/owc | |
92 ;; | |
93 | |
94 bcc) | |
95 # Borland C++ 5.5 | |
96 | |
97 . auto/cc/bcc | |
98 ;; | |
99 | |
100 esac | |
101 | |
515 | 102 CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT" |
455 | 103 |
104 fi | |
105 | |
106 CFLAGS="$CFLAGS $NGX_CC_OPT" | |
107 | |
108 | |
469 | 109 if [ "$NGX_PLATFORM" != win32 ]; then |
455 | 110 |
461 | 111 if test -n "$NGX_LD_OPT"; then |
112 ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\" | |
469 | 113 ngx_feature_name= |
461 | 114 ngx_feature_run=no |
115 ngx_feature_incs= | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
573
diff
changeset
|
116 ngx_feature_path= |
461 | 117 ngx_feature_libs= |
118 ngx_feature_test= | |
119 . auto/feature | |
120 | |
121 if [ $ngx_found = no ]; then | |
122 echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\" | |
123 echo | |
124 exit 1 | |
125 fi | |
126 fi | |
127 | |
455 | 128 ngx_feature="gcc variadic macros" |
469 | 129 ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" |
455 | 130 ngx_feature_run=yes |
131 ngx_feature_incs="#include <stdio.h> | |
132 #define var(dummy, args...) sprintf(args)" | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
573
diff
changeset
|
133 ngx_feature_path= |
455 | 134 ngx_feature_libs= |
135 ngx_feature_test="char buf[30]; buf[0] = '0'; | |
136 var(0, buf, \"%d\", 1); | |
137 if (buf[0] != '1') return 1" | |
138 . auto/feature | |
139 | |
140 | |
517 | 141 if [ "$NGX_CC_NAME" = "ccc" ]; then |
515 | 142 echo "checking for C99 variadic macros ... disabled" |
143 else | |
144 ngx_feature="C99 variadic macros" | |
145 ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" | |
146 ngx_feature_run=yes | |
147 ngx_feature_incs="#include <stdio.h> | |
148 #define var(dummy, ...) sprintf(__VA_ARGS__)" | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
573
diff
changeset
|
149 ngx_feature_path= |
515 | 150 ngx_feature_libs= |
151 ngx_feature_test="char buf[30]; buf[0] = '0'; | |
152 var(0, buf, \"%d\", 1); | |
153 if (buf[0] != '1') return 1" | |
154 . auto/feature | |
155 fi | |
455 | 156 |
467 | 157 |
158 # ngx_feature="inline" | |
469 | 159 # ngx_feature_name= |
467 | 160 # ngx_feature_run=no |
161 # ngx_feature_incs="int inline f(void) { return 1 }" | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
573
diff
changeset
|
162 # ngx_feature_path= |
467 | 163 # ngx_feature_libs= |
164 # ngx_feature_test= | |
165 # . auto/feature | |
166 # | |
167 # if [ $ngx_found = yes ]; then | |
168 # fi | |
169 | |
455 | 170 fi |