From 6b7a231f6e2d5300703a31f07ac6cfd5a3a81c58 Mon Sep 17 00:00:00 2001
From: scott snyder <snyder@bnl.gov>
Date: Wed, 27 Oct 2021 04:45:55 +0200
Subject: [PATCH] TrkTrack: More TrackStateOnSurface diagnostics.

Extend a bit the diagnostics we get when we try to delete a bad TSOS.
---
 .../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