PERFORCE change 152067 for review

Peter Wemm peter at FreeBSD.org
Mon Oct 27 23:25:15 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=152067

Change 152067 by peter at peter_overcee on 2008/10/27 23:25:11

	Sigh.  That serves me right for trying to be too smart.  gcc tries to execute
	this nested function on the stack and valgrind has done funky things with signal
	handlers at this point that causes recursion.

Affected files ...

.. //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#7 edit

Differences ...

==== //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr-freebsd.c#7 (text+ko) ====

@@ -352,24 +352,33 @@
 
 /* Given a memory address, attempt to deduce its filename.  To do
    this, we use /proc/curproc/map.  If this fails, return false. */
+static Addr search_addr;
+static HChar *search_buf;
+static Int search_nbuf;
+
+/* Callback function for parsing map */
+static void get_name_for_addr_callback(Addr addr, SizeT len, UInt prot,
+			     ULong dev, ULong ino, ULong offset,
+			     const UChar* filename )
+{
+   if (search_buf[0] == '/')
+      return;
+   if (search_addr < addr)
+      return;
+   if (search_addr > (addr + len - 1))
+      return;
+   VG_(strncpy)( search_buf, filename, search_nbuf - 1);
+}
+
 static
-Bool get_name_for_addr ( Addr search_addr, HChar* buf, Int nbuf )
+Bool get_name_for_addr ( Addr addr, HChar* buf, Int nbuf )
 {
    Int i;
 
-   /* Callback function for parsing map */
-   void get_name_for_addr_callback(Addr addr, SizeT len, UInt prot,
-                                ULong dev, ULong ino, ULong offset,
-                                const UChar* filename )
-   {
-      if (search_addr < addr)
-         return;
-      if (search_addr > (addr + len - 1))
-         return;
-      VG_(strncpy)( buf, filename, nbuf - 1);
-   }
-
    for (i = 0; i < nbuf; i++) buf[i] = 0;
+   search_addr = addr;
+   search_buf = buf;
+   search_nbuf = nbuf;
    parse_procselfmaps( get_name_for_addr_callback, 0);
    if (buf[0] == '/')
       return True;


More information about the p4-projects mailing list