This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.2.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit ba4d802ef5b39f208a44be620aac735a82a1a06a 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. (cherry picked from commit 33dee5d6aa834f8fce32bbe21817baa0ad9acda6) --- 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);
