session: session debug crashes with elog track 18/43518/3
authorSteven Luong <[email protected]>
Mon, 4 Aug 2025 20:41:00 +0000 (13:41 -0700)
committerFlorin Coras <[email protected]>
Tue, 5 Aug 2025 08:10:07 +0000 (08:10 +0000)
session debug uses elog track in the the transport.
However, not all transports initialize elog track.
If they don't, session debug crashes.

The fix is to use non elog track if elog track
is not initialized in the transport.

Type: fix

Change-Id: I123f71b39a4262cd68e35634dd5c7ec0e7b88cb0
Signed-off-by: Steven Luong <[email protected]>
src/vnet/session/session_debug.h

index d433ef4..7090997 100644 (file)
@@ -149,14 +149,16 @@ extern session_dbg_main_t session_dbg_main;
 
 #define SESSION_DBG(_fmt, _args...) clib_warning (_fmt, ##_args)
 
-#define DEC_SESSION_ETD(_s, _e, _size)                                 \
-  struct                                                               \
-  {                                                                    \
-    u32 data[_size];                                                   \
-  } * ed;                                                              \
-  transport_connection_t *_tc = session_get_transport (_s);            \
-  ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main,                   \
-                       _e, _tc->elog_track)
+#define DEC_SESSION_ETD(_s, _e, _size)                                        \
+  struct                                                                      \
+  {                                                                           \
+    u32 data[_size];                                                          \
+  } *ed;                                                                      \
+  transport_connection_t *_tc = session_get_transport (_s);                   \
+  if (_tc->elog_track.name == 0)                                              \
+    ed = ELOG_DATA (&vlib_global_main.elog_main, _e);                         \
+  else                                                                        \
+    ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, _e, _tc->elog_track)
 
 #define DEC_SESSION_ED(_e, _size)                                      \
   struct                                                               \