diff --git a/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx b/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx
index a9bfc89c8bdce55b7a4833e6fc38c9a33d4bd0b0..46bf55384ba9aecdb72b1c9d06f47aa3eeed213f 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]);
   }
 }