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);