This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 33dee5d6aa synserver accept assertion to log event details before 
aborting (#12903)
33dee5d6aa is described below

commit 33dee5d6aa834f8fce32bbe21817baa0ad9acda6
Author: Bryan Call <[email protected]>
AuthorDate: Sat Feb 21 13:06:41 2026 -0800

    synserver accept assertion to log event details before aborting (#12903)
    
    * Replace bare TSAssert in synserver_vc_accept and synserver_vc_refuse
      with ink_abort that logs the unexpected event number and, if the data
      looks like a negated errno, the strerror string. Gives CI output useful
      for debugging the accept() failure seen on Rocky build #8376.
    
    * Validate data in intptr_t space (negative and >= -4095) before treating
      it as a negated errno to avoid truncating a pointer to int.
---
 src/api/InkAPITest.cc | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/api/InkAPITest.cc b/src/api/InkAPITest.cc
index 7d2fcc27cd..872bc49ebd 100644
--- a/src/api/InkAPITest.cc
+++ b/src/api/InkAPITest.cc
@@ -892,7 +892,16 @@ synserver_delete(SocketServer *s)
 static int
 synserver_vc_refuse(TSCont contp, TSEvent event, void *data)
 {
-  TSAssert((event == TS_EVENT_NET_ACCEPT) || (event == 
TS_EVENT_NET_ACCEPT_FAILED));
+  if (event != TS_EVENT_NET_ACCEPT && event != TS_EVENT_NET_ACCEPT_FAILED) {
+    // net_accept() passes negated errno as data on EVENT_ERROR; Linux 
MAX_ERRNO is 4095
+    intptr_t data_val = reinterpret_cast<intptr_t>(data);
+    if (data_val < 0 && data_val >= -4095) {
+      int err = static_cast<int>(-data_val);
+      ink_abort("synserver_vc_refuse: unexpected event %d, accept errno: %s 
(%d)", event, strerror(err), err);
+    } else {
+      ink_abort("synserver_vc_refuse: unexpected event %d, data: %p", event, 
data);
+    }
+  }
 
   SocketServer *s = static_cast<SocketServer *>(TSContDataGet(contp));
   TSAssert(s->magic == MAGIC_ALIVE);
@@ -913,7 +922,16 @@ synserver_vc_refuse(TSCont contp, TSEvent event, void 
*data)
 static int
 synserver_vc_accept(TSCont contp, TSEvent event, void *data)
 {
-  TSAssert((event == TS_EVENT_NET_ACCEPT) || (event == 
TS_EVENT_NET_ACCEPT_FAILED));
+  if (event != TS_EVENT_NET_ACCEPT && event != TS_EVENT_NET_ACCEPT_FAILED) {
+    // net_accept() passes negated errno as data on EVENT_ERROR; Linux 
MAX_ERRNO is 4095
+    intptr_t data_val = reinterpret_cast<intptr_t>(data);
+    if (data_val < 0 && data_val >= -4095) {
+      int err = static_cast<int>(-data_val);
+      ink_abort("synserver_vc_accept: unexpected event %d, accept errno: %s 
(%d)", event, strerror(err), err);
+    } else {
+      ink_abort("synserver_vc_accept: unexpected event %d, data: %p", event, 
data);
+    }
+  }
 
   SocketServer *s = static_cast<SocketServer *>(TSContDataGet(contp));
   TSAssert(s->magic == MAGIC_ALIVE);

Reply via email to