diff --git a/patches/nginx-1.13.2-dtrace.patch b/patches/nginx-1.13.2-dtrace.patch index 874d19a..80a674a 100644 --- a/patches/nginx-1.13.2-dtrace.patch +++ b/patches/nginx-1.13.2-dtrace.patch @@ -1,5 +1,5 @@ diff --git a/README b/README -index 2f68e14..262822a 100644 +index 2f68e14e..262822a5 100644 --- a/README +++ b/README @@ -1,3 +1,38 @@ @@ -43,7 +43,7 @@ index 2f68e14..262822a 100644 +The original Nginx documentation is available at http://nginx.org diff --git a/auto/install b/auto/install -index 4dcc743..fbce42b 100644 +index d884487a..c5027679 100644 --- a/auto/install +++ b/auto/install @@ -16,6 +16,20 @@ END @@ -84,7 +84,7 @@ index 4dcc743..fbce42b 100644 case ".$NGX_ERROR_LOG_PATH" in ./* | .) ;; -@@ -159,6 +183,36 @@ install: $NGX_OBJS${ngx_dirsep}nginx${ngx_binext} \ +@@ -158,6 +182,36 @@ install: build $NGX_INSTALL_PERL_MODULES || cp -R $NGX_HTML '\$(DESTDIR)$NGX_PREFIX' END @@ -121,8 +121,8 @@ index 4dcc743..fbce42b 100644 if test -n "$NGX_ERROR_LOG_PATH"; then cat << END >> $NGX_MAKEFILE -@@ -181,6 +235,19 @@ END - fi +@@ -194,6 +248,19 @@ END + done +if [ $NGX_DTRACE = YES ]; then @@ -142,7 +142,7 @@ index 4dcc743..fbce42b 100644 cat << END >> Makefile diff --git a/auto/make b/auto/make -index 039a70f..eafe77c 100644 +index 7ddd1007..367a4e55 100644 --- a/auto/make +++ b/auto/make @@ -27,6 +27,9 @@ LINK = $LINK @@ -155,7 +155,7 @@ index 039a70f..eafe77c 100644 if test -n "$NGX_PERL_CFLAGS"; then echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE -@@ -208,6 +211,46 @@ ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \ +@@ -209,6 +212,46 @@ ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \ | sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \ -e "s/\//$ngx_regex_dirsep/g"` @@ -203,21 +203,21 @@ index 039a70f..eafe77c 100644 if test -n "$NGX_LD_OPT$CORE_LIBS"; then ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \ diff --git a/auto/modules b/auto/modules -index 2074778..a722871 100644 +index be3561e6..609af7d6 100644 --- a/auto/modules +++ b/auto/modules -@@ -75,7 +75,8 @@ if :; then - src/http/ngx_http_variables.h \ - src/http/ngx_http_script.h \ - src/http/ngx_http_upstream.h \ -- src/http/ngx_http_upstream_round_robin.h" -+ src/http/ngx_http_upstream_round_robin.h \ -+ src/http/ngx_http_probe.h" - ngx_module_srcs="src/http/ngx_http.c \ - src/http/ngx_http_core_module.c \ - src/http/ngx_http_special_response.c \ +@@ -77,7 +77,8 @@ if [ $HTTP = YES ]; then + src/http/ngx_http_variables.h \ + src/http/ngx_http_script.h \ + src/http/ngx_http_upstream.h \ +- src/http/ngx_http_upstream_round_robin.h" ++ src/http/ngx_http_upstream_round_robin.h \ ++ src/http/ngx_http_probe.h" + ngx_module_srcs="src/http/ngx_http.c \ + src/http/ngx_http_core_module.c \ + src/http/ngx_http_special_response.c \ diff --git a/auto/options b/auto/options -index 2833fb1..f02b8b8 100644 +index 66b822a7..fb141218 100644 --- a/auto/options +++ b/auto/options @@ -13,6 +13,8 @@ NGX_CONF_PATH= @@ -242,7 +242,7 @@ index 2833fb1..f02b8b8 100644 NGX_CC_OPT= NGX_LD_OPT= CPU=NO -@@ -189,6 +197,8 @@ do +@@ -187,6 +195,8 @@ do --error-log-path=*) NGX_ERROR_LOG_PATH="$value";; --pid-path=*) NGX_PID_PATH="$value" ;; --lock-path=*) NGX_LOCK_PATH="$value" ;; @@ -251,7 +251,7 @@ index 2833fb1..f02b8b8 100644 --user=*) NGX_USER="$value" ;; --group=*) NGX_GROUP="$value" ;; -@@ -322,7 +332,8 @@ use the \"--with-mail_ssl_module\" option instead" +@@ -338,7 +348,8 @@ use the \"--with-mail_ssl_module\" option instead" --with-ld-opt=*) NGX_LD_OPT="$value" ;; --with-cpu-opt=*) CPU="$value" ;; --with-debug) NGX_DEBUG=YES ;; @@ -261,7 +261,7 @@ index 2833fb1..f02b8b8 100644 --without-pcre) USE_PCRE=DISABLED ;; --with-pcre) USE_PCRE=YES ;; --with-pcre=*) PCRE="$value" ;; -@@ -377,6 +388,8 @@ cat << END +@@ -410,6 +421,8 @@ cat << END --error-log-path=PATH set error log pathname --pid-path=PATH set nginx.pid pathname --lock-path=PATH set nginx.lock pathname @@ -270,7 +270,7 @@ index 2833fb1..f02b8b8 100644 --user=USER set non-privileged user for worker processes -@@ -532,6 +545,8 @@ cat << END +@@ -567,6 +580,8 @@ cat << END --with-openssl-opt=OPTIONS set additional build options for OpenSSL --with-debug enable debug logging @@ -279,7 +279,7 @@ index 2833fb1..f02b8b8 100644 END -@@ -563,6 +578,7 @@ NGX_CONF_PATH=${NGX_CONF_PATH:-conf/nginx.conf} +@@ -585,6 +600,7 @@ NGX_CONF_PATH=${NGX_CONF_PATH:-conf/nginx.conf} NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH` NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid} NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock} @@ -288,18 +288,18 @@ index 2833fb1..f02b8b8 100644 if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then NGX_ERROR_LOG_PATH= diff --git a/auto/os/darwin b/auto/os/darwin -index 9b31b1f..1bd931c 100644 +index 429468f7..be2d78dc 100644 --- a/auto/os/darwin +++ b/auto/os/darwin -@@ -116,3 +116,6 @@ ngx_feature_libs= - ngx_feature_test="int32_t lock, n; - n = OSAtomicCompareAndSwap32Barrier(0, 1, &lock)" +@@ -118,3 +118,6 @@ ngx_feature_libs= + ngx_feature_test="int32_t lock = 0; + if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1" . auto/feature + +DTRACE_PROBE_OBJ=NO + diff --git a/auto/os/freebsd b/auto/os/freebsd -index 937ca20..d76b32b 100644 +index 937ca204..d76b32b6 100644 --- a/auto/os/freebsd +++ b/auto/os/freebsd @@ -105,3 +105,8 @@ if [ $version -ge 701000 ]; then @@ -312,17 +312,17 @@ index 937ca20..d76b32b 100644 +fi + diff --git a/auto/os/linux b/auto/os/linux -index c932267..b5114d6 100644 +index a0c8795b..64825435 100644 --- a/auto/os/linux +++ b/auto/os/linux -@@ -171,3 +171,5 @@ ngx_include="sys/vfs.h"; . auto/include +@@ -174,3 +174,5 @@ ngx_include="sys/vfs.h"; . auto/include CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" + +DTRACE_FROM_SYSTEMTAP=YES diff --git a/auto/sources b/auto/sources -index e08e863..0432068 100644 +index 13981474..1e61bf90 100644 --- a/auto/sources +++ b/auto/sources @@ -40,10 +40,16 @@ CORE_DEPS="src/core/nginx.h \ @@ -342,7 +342,7 @@ index e08e863..0432068 100644 CORE_SRCS="src/core/nginx.c \ src/core/ngx_log.c \ src/core/ngx_palloc.c \ -@@ -88,7 +94,8 @@ EVENT_DEPS="src/event/ngx_event.h \ +@@ -89,7 +95,8 @@ EVENT_DEPS="src/event/ngx_event.h \ src/event/ngx_event_timer.h \ src/event/ngx_event_posted.h \ src/event/ngx_event_connect.h \ @@ -352,7 +352,7 @@ index e08e863..0432068 100644 EVENT_SRCS="src/event/ngx_event.c \ src/event/ngx_event_timer.c \ -@@ -250,3 +257,7 @@ NGX_WIN32_RC="src/os/win32/nginx.rc" +@@ -253,3 +260,7 @@ NGX_WIN32_RC="src/os/win32/nginx.rc" HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c @@ -361,10 +361,10 @@ index e08e863..0432068 100644 + +NGX_TAPSET_SRCS=src/dtrace/nginx.stp diff --git a/auto/summary b/auto/summary -index dc8fe4f..ed67c75 100644 +index 9aa776ed..d8f727db 100644 --- a/auto/summary +++ b/auto/summary -@@ -72,6 +72,19 @@ else +@@ -58,6 +58,19 @@ else echo " nginx logs errors to stderr" fi @@ -385,7 +385,7 @@ index dc8fe4f..ed67c75 100644 nginx http access log file: "$NGX_HTTP_LOG_PATH" nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH" diff --git a/configure b/configure -index ceff15e..49223f8 100755 +index 7e6e33a7..c4ca23c9 100755 --- a/configure +++ b/configure @@ -23,6 +23,9 @@ if [ $NGX_DEBUG = YES ]; then @@ -400,7 +400,7 @@ index ceff15e..49223f8 100755 echo "checking for OS" diff --git a/src/core/ngx_core_probe.h b/src/core/ngx_core_probe.h new file mode 100644 -index 0000000..1841df9 +index 00000000..1841df9c --- /dev/null +++ b/src/core/ngx_core_probe.h @@ -0,0 +1,24 @@ @@ -429,7 +429,7 @@ index 0000000..1841df9 + +#endif /* _NGX_CORE_PROBE_H_INCLUDED_ */ diff --git a/src/core/ngx_palloc.c b/src/core/ngx_palloc.c -index ef4a647..49bb30b 100644 +index d3044ac9..d62ac45f 100644 --- a/src/core/ngx_palloc.c +++ b/src/core/ngx_palloc.c @@ -7,6 +7,7 @@ @@ -439,8 +439,8 @@ index ef4a647..49bb30b 100644 +#include - static void *ngx_palloc_block(ngx_pool_t *pool, size_t size); -@@ -37,6 +38,8 @@ ngx_create_pool(size_t size, ngx_log_t *log) + static ngx_inline void *ngx_palloc_small(ngx_pool_t *pool, size_t size, +@@ -39,6 +40,8 @@ ngx_create_pool(size_t size, ngx_log_t *log) p->cleanup = NULL; p->log = log; @@ -451,7 +451,7 @@ index ef4a647..49bb30b 100644 diff --git a/src/dtrace/nginx.stp b/src/dtrace/nginx.stp new file mode 100644 -index 0000000..e824daf +index 00000000..e824dafe --- /dev/null +++ b/src/dtrace/nginx.stp @@ -0,0 +1,299 @@ @@ -756,7 +756,7 @@ index 0000000..e824daf + diff --git a/src/dtrace/nginx_provider.d b/src/dtrace/nginx_provider.d new file mode 100644 -index 0000000..435adf4 +index 00000000..435adf47 --- /dev/null +++ b/src/dtrace/nginx_provider.d @@ -0,0 +1,39 @@ @@ -800,8 +800,8 @@ index 0000000..435adf4 +#pragma D attributes Evolving/Evolving/Common provider nginx args + diff --git a/src/dtrace/stap-nginx b/src/dtrace/stap-nginx -new file mode 100755 -index 0000000..1bca4cf +new file mode 100644 +index 00000000..1bca4cfb --- /dev/null +++ b/src/dtrace/stap-nginx @@ -0,0 +1,6 @@ @@ -813,7 +813,7 @@ index 0000000..1bca4cf + diff --git a/src/event/ngx_event_probe.h b/src/event/ngx_event_probe.h new file mode 100644 -index 0000000..b7b2749 +index 00000000..b7b27496 --- /dev/null +++ b/src/event/ngx_event_probe.h @@ -0,0 +1,32 @@ @@ -850,7 +850,7 @@ index 0000000..b7b2749 + +#endif /* _NGX_EVENT_PROBE_H_INCLUDED_ */ diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c -index 8f547b2..6e77465 100644 +index 698b88fa..591558dc 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -8,6 +8,7 @@ @@ -870,9 +870,9 @@ index 8f547b2..6e77465 100644 ev->handler(ev); } } -@@ -136,3 +139,19 @@ ngx_event_cancel_timers(void) - ev->handler(ev); - } +@@ -124,3 +127,19 @@ ngx_event_no_timers_left(void) + + return NGX_OK; } + + @@ -891,11 +891,11 @@ index 8f547b2..6e77465 100644 +} +#endif diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h -index 99f8a48..8bc619a 100644 +index be81b157..c448771a 100644 --- a/src/event/ngx_event_timer.h +++ b/src/event/ngx_event_timer.h @@ -25,12 +25,23 @@ void ngx_event_expire_timers(void); - void ngx_event_cancel_timers(void); + ngx_int_t ngx_event_no_timers_left(void); +#if (NGX_DTRACE) @@ -930,7 +930,7 @@ index 99f8a48..8bc619a 100644 "event timer add: %d: %M:%M", ngx_event_ident(ev->data), timer, ev->timer.key); diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c -index 0ceb613..986f717 100644 +index c036389a..0e32f3d2 100644 --- a/src/http/ngx_http.c +++ b/src/http/ngx_http.c @@ -8,6 +8,7 @@ @@ -952,7 +952,7 @@ index 0ceb613..986f717 100644 return NGX_CONF_ERROR; } diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c -index 3f1b595..d6f61bf 100644 +index 02059efd..194e62a0 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -8,6 +8,7 @@ @@ -963,7 +963,7 @@ index 3f1b595..d6f61bf 100644 typedef struct { -@@ -2431,6 +2432,8 @@ ngx_http_subrequest(ngx_http_request_t *r, +@@ -2448,6 +2449,8 @@ ngx_http_subrequest(ngx_http_request_t *r, ngx_http_postponed_request_t *pr, *p; if (r->subrequests == 0) { @@ -972,9 +972,9 @@ index 3f1b595..d6f61bf 100644 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "subrequests cycle while processing \"%V\"", uri); return NGX_ERROR; -@@ -2557,6 +2560,8 @@ ngx_http_subrequest(ngx_http_request_t *r, - - *psr = sr; +@@ -2596,6 +2599,8 @@ ngx_http_subrequest(ngx_http_request_t *r, + ngx_http_update_location_config(sr); + } + ngx_http_probe_subrequest_start(sr); + @@ -983,7 +983,7 @@ index 3f1b595..d6f61bf 100644 diff --git a/src/http/ngx_http_probe.h b/src/http/ngx_http_probe.h new file mode 100644 -index 0000000..d7d2d45 +index 00000000..d7d2d45d --- /dev/null +++ b/src/http/ngx_http_probe.h @@ -0,0 +1,75 @@ @@ -1063,7 +1063,7 @@ index 0000000..d7d2d45 + +#endif /* _NGX_HTTP_PROBE_H_INCLUDED_ */ diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c -index 860b228..7d9fb5d 100644 +index de1b2027..887cf6cd 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -8,6 +8,7 @@ @@ -1074,7 +1074,7 @@ index 860b228..7d9fb5d 100644 static void ngx_http_wait_request_handler(ngx_event_t *ev); -@@ -1058,7 +1059,6 @@ ngx_http_process_request_line(ngx_event_t *rev) +@@ -1091,7 +1092,6 @@ ngx_http_process_request_line(ngx_event_t *rev) } } @@ -1082,7 +1082,7 @@ index 860b228..7d9fb5d 100644 ngx_int_t ngx_http_process_request_uri(ngx_http_request_t *r) { -@@ -1315,6 +1315,8 @@ ngx_http_process_request_headers(ngx_event_t *rev) +@@ -1348,6 +1348,8 @@ ngx_http_process_request_headers(ngx_event_t *rev) return; } @@ -1091,7 +1091,7 @@ index 860b228..7d9fb5d 100644 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http header: \"%V: %V\"", &h->key, &h->value); -@@ -2285,7 +2287,11 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) +@@ -2327,7 +2329,11 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) } if (r != r->main && r->post_subrequest) { @@ -1103,7 +1103,7 @@ index 860b228..7d9fb5d 100644 } if (rc == NGX_ERROR -@@ -2335,6 +2341,8 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) +@@ -2393,6 +2399,8 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) if (r->buffered || r->postponed) { @@ -1112,7 +1112,7 @@ index 860b228..7d9fb5d 100644 if (ngx_http_set_write_handler(r) != NGX_OK) { ngx_http_terminate_request(r, 0); } -@@ -2370,10 +2378,14 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) +@@ -2425,10 +2433,14 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) pr->postponed = pr->postponed->next; } @@ -1127,7 +1127,7 @@ index 860b228..7d9fb5d 100644 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, "http finalize non-active request: \"%V?%V\"", &r->uri, &r->args); -@@ -2385,6 +2397,8 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) +@@ -2440,6 +2452,8 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc) } } @@ -1137,7 +1137,7 @@ index 860b228..7d9fb5d 100644 r->main->count++; ngx_http_terminate_request(r, 0); diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c -index e9562c0..2a65644 100644 +index c4f092e5..67a8cbf9 100644 --- a/src/http/ngx_http_request_body.c +++ b/src/http/ngx_http_request_body.c @@ -8,6 +8,7 @@ @@ -1148,7 +1148,7 @@ index e9562c0..2a65644 100644 static void ngx_http_read_client_request_body_handler(ngx_http_request_t *r); -@@ -471,6 +472,8 @@ ngx_http_do_read_client_request_body(ngx_http_request_t *r) +@@ -421,6 +422,8 @@ ngx_http_do_read_client_request_body(ngx_http_request_t *r) rb->post_handler(r); }