summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2024-05-08 14:46:58 +0200
committerJoe Orton <jorton@apache.org>2024-05-08 14:46:58 +0200
commitac774f7340bd1e2bb5ff092e27e75cd0051f7783 (patch)
treeef5771c7168ee7173ddfe58d5849d57fc89a1f0b
parent* modules/proxy/mod_proxy_fcgi.c (dispatch): Only allocate a heap (diff)
downloadapache2-ac774f7340bd1e2bb5ff092e27e75cd0051f7783.tar.xz
apache2-ac774f7340bd1e2bb5ff092e27e75cd0051f7783.zip
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(). Github: closes #443 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1917578 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--changes-entries/linux-log-tid.txt1
-rw-r--r--configure.in6
-rw-r--r--server/log.c6
3 files changed, 12 insertions, 1 deletions
diff --git a/changes-entries/linux-log-tid.txt b/changes-entries/linux-log-tid.txt
new file mode 100644
index 0000000000..9f6ce95397
--- /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 719f8ac5c3..c56c8972af 100644
--- a/configure.in
+++ b/configure.in
@@ -562,6 +562,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 <sys/types.h>
diff --git a/server/log.c b/server/log.c
index 2f84635a75..1777a64615 100644
--- a/server/log.c
+++ b/server/log.c
@@ -69,6 +69,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;
@@ -907,7 +911,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