From: Joe Orton Date: Fri, 21 Jun 2024 14:31:54 +0000 (+0000) Subject: Merge r1917578 from trunk: X-Git-Tag: 2.4.60-rc1-candidate~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=453dbd9ad35f6254b632439df909892ad2e65ee7;p=thirdparty%2Fapache%2Fhttpd.git Merge r1917578 from trunk: On Linux use the real thread id via gettid() in error logging, where available, rather than the (meaningless) default pthread_self()-as-integer interpretation: * configure.in: Define DEFAULT_LOG_TID on Linux if gettid() is available. * server/log.c: Define DEFAULT_LOG_TID as NULL by default. (do_errorlog_default): Use DEFAULT_LOG_TID as the argument to log_tid(). Reviewed by: jorton, ylavic, icing git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1918489 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/changes-entries/linux-log-tid.txt b/changes-entries/linux-log-tid.txt new file mode 100644 index 00000000000..9f6ce953977 --- /dev/null +++ b/changes-entries/linux-log-tid.txt @@ -0,0 +1 @@ + *) core: On Linux, log the real thread ID in error logs. [Joe Orton] diff --git a/configure.in b/configure.in index 8134a69d2af..d2a009d7902 100644 --- a/configure.in +++ b/configure.in @@ -545,6 +545,12 @@ pid_t t = syscall(SYS_gettid); return t == -1 ? 1 : 0; }, fi fi +case ${host}X${ac_cv_func_gettid}X${ap_cv_gettid} in +*linux-*XyesX* | *linux-*XnoXyes) + AC_DEFINE(DEFAULT_LOG_TID, ["g"], [Define as default argument for thread id in error logging]) + ;; +esac + dnl ## Check for the tm_gmtoff field in struct tm to get the timezone diffs AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, [AC_TRY_COMPILE([#include diff --git a/server/log.c b/server/log.c index 22d2f8d9e46..9576d071c27 100644 --- a/server/log.c +++ b/server/log.c @@ -64,6 +64,10 @@ #undef APLOG_MODULE_INDEX #define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX +#ifndef DEFAULT_LOG_TID +#define DEFAULT_LOG_TID NULL +#endif + typedef struct { const char *t_name; int t_val; @@ -990,7 +994,7 @@ static int do_errorlog_default(const ap_errorlog_info *info, char *buf, #if APR_HAS_THREADS field_start = len; len += cpystrn(buf + len, ":tid ", buflen - len); - item_len = log_tid(info, NULL, buf + len, buflen - len); + item_len = log_tid(info, DEFAULT_LOG_TID, buf + len, buflen - len); if (!item_len) len = field_start; else