From 9b39fc8061f5883e8006f93fa9eefbe1b985123f Mon Sep 17 00:00:00 2001
From: Peter Berta <peter.berta@cern.ch>
Date: Wed, 27 Oct 2021 19:44:32 +0200
Subject: [PATCH] Merge branch 'diag.TrkTrack-20211027' into '22.0-mc20'

TrkTrack: More TrackStateOnSurface diagnostics.

See merge request atlas/athena!47646

(cherry picked from commit 270cbfa5fcecbb2d9ed0899663b6c873d91e0307)

6b7a231f TrkTrack: More TrackStateOnSurface diagnostics.
---
 .../TrkTrack/src/TrackStateOnSurface.cxx      | 24 ++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx b/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx
index a9bfc89c8bdc..46bf55384ba9 100755
--- a/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx
+++ b/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx
@@ -8,6 +8,26 @@
 #include <iostream>
 #include <stdexcept>
 #include <string>
+#include <dlfcn.h>
+
+
+namespace {
+void syminfo (void* addr)
+{
+  Dl_info info;
+  std::cerr << "   " << addr;
+  if (dladdr (addr, &info) != 0) {
+    if (info.dli_fname) {
+      std::cerr << " " << info.dli_fname << " " << info.dli_fbase;
+    }
+    if (info.dli_sname) {
+      std::cerr << " " << info.dli_sname << " " << info.dli_saddr;
+    }
+  }
+  std::cerr << "\n";
+}
+}
+
 
 namespace Trk {
 TrackStateOnSurface::TrackStateOnSurface() {}
@@ -155,7 +175,9 @@ TrackStateOnSurface::~TrackStateOnSurface()
   const char* p = reinterpret_cast<const char*>(m_alignmentEffectsOnTrack.get());
   if (p && reinterpret_cast<uintptr_t>(p) < 0x1000) {
     std::cerr << "ERROR: ~TrackStateOnSurface bad AEOT pointer\n";
-    CxxUtils::safeHexdump (std::cerr, ((const char*)this)-32, sizeof(TrackStateOnSurface)+32);
+    CxxUtils::safeHexdump (std::cerr, ((const char*)this)-80, sizeof(TrackStateOnSurface)+80+24);
+    syminfo (((void**)this)[0]);
+    syminfo (((void**)this)[-4]);
   }
 }
 
-- 
GitLab