Index: /trunk/Ohana/src/libohana/src/ohana_allocate.c
===================================================================
--- /trunk/Ohana/src/libohana/src/ohana_allocate.c	(revision 4497)
+++ /trunk/Ohana/src/libohana/src/ohana_allocate.c	(revision 4498)
@@ -156,5 +156,12 @@
   }
 
-  ohana_memabort ("allocated memory not found for free (%s, %d)\n", file, line);
+  /* find already freed examples */
+  for (i = 0; i < Nmemlist; i++) {
+    if (memlist[i].ptr == in) {
+      fprintf (stderr, "used here: %4d %s %d\n", i, memlist[i].file, memlist[i].line);
+    }
+  }
+
+  ohana_memabort ("allocated memory not found for free (%s, %d : %x)\n", file, line, in);
   return;
 }
@@ -234,5 +241,14 @@
     Ns[N] ++;
     if ((allmemory == 0) && (memlist[i].state == STATE_FREE)) continue;
-    fprintf (stderr, "%3d %4d %c %s %d\n", Ns[N], i, S[N], memlist[i].file, memlist[i].line);
+    if (memlist[i].state == STATE_EXTERNAL) {
+      fprintf (stderr, "%3d %4d %x : %x - external (external external) %c %s %d\n", 
+	       Ns[N], i, memlist[i].ptr, memlist[i].ptr, 
+	       S[N], memlist[i].file, memlist[i].line);
+    } else {
+      fprintf (stderr, "%3d %4d %x : %x - %x (%x %x) %c %s %d\n", 
+	       Ns[N], i, memlist[i].ptr, (memlist[i].ptr - 4), (memlist[i].ptr + memlist[i].size + 4), 
+	       *(long *)(memlist[i].ptr - 4), *(long *)(memlist[i].ptr + memlist[i].size), 
+	       S[N], memlist[i].file, memlist[i].line);
+    }
   }
   fprintf (stderr, "Nused: %d (Nalloc: %d, Nrealloc: %d), Nfree: %d\n", 
