]> granicus.if.org Git - curl/commitdiff
supports the new ADDR prefix for getaddrinfo() and freeaddrinfo() tracing
authorDaniel Stenberg <daniel@haxx.se>
Thu, 4 Oct 2001 13:25:40 +0000 (13:25 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 4 Oct 2001 13:25:40 +0000 (13:25 +0000)
memanalyze.pl

index a9dce2044b8b9b7f567599c57c6fb0f2be31d0b6..3006ffe706ecad0ed1524e2160b5e82d409ccb6c 100755 (executable)
@@ -167,6 +167,37 @@ while(<STDIN>) {
                 $fopens--;
             }
         }
+    }
+    # ADDR url.c:1282 getaddrinfo() = 0x5ddd
+    elsif($_ =~ /^ADDR ([^:]*):(\d*) (.*)/) {
+        # generic match for the filename+linenumber
+        $source = $1;
+        $linenum = $2;
+        $function = $3;
+
+        if($function =~ /getaddrinfo\(\) = (\(nil\)|0x([0-9a-f]*))/) {
+            my $add = $2;
+            if($add eq "(nil)") {
+                ;
+            }
+            else {
+                $addrinfo{$add}=1;
+                $addrinfofile{$add}="$source:$linenum";
+                $addrinfos++;
+            }
+        }
+        # fclose(0x1026c8)
+        elsif($function =~ /freeaddrinfo\(0x([0-9a-f]*)\)/) {
+            if(!$addrinfo{$1}) {
+                print "freeaddrinfo() without getaddrinfo(): $line\n";
+            }
+            else {
+                $addrinfo{$1}=0;
+                $addrinfos--;
+            }
+        }
+
+        
     }
     else {
         print "Not recognized prefix line: $line\n";
@@ -203,6 +234,15 @@ if($fopens) {
     }
 }
 
+if($addrinfos) {
+    print "IPv6-style name resolve data left at:\n";
+    for(keys %addrinfofile) {
+        if($addrinfo{$_} == 1) {
+            print "getaddrinfo() called at ".$addrinfofile{$_}."\n";
+        }
+    }
+}
+
 if($verbose) {
     print "Mallocs: $mallocs\n",
     "Reallocs: $reallocs\n",