17c478bd9Sstevel@tonic-gate#
2*1da57d55SToomas Soome# This script looks for memory leaks by analyzing the output of "sqlite"
37c478bd9Sstevel@tonic-gate# when compiled with the MEMORY_DEBUG=2 option.
47c478bd9Sstevel@tonic-gate#
57c478bd9Sstevel@tonic-gate/[0-9]+ malloc / {
67c478bd9Sstevel@tonic-gate  mem[$6] = $0
77c478bd9Sstevel@tonic-gate}
87c478bd9Sstevel@tonic-gate/[0-9]+ realloc / {
97c478bd9Sstevel@tonic-gate  mem[$8] = "";
107c478bd9Sstevel@tonic-gate  mem[$10] = $0
117c478bd9Sstevel@tonic-gate}
127c478bd9Sstevel@tonic-gate/[0-9]+ free / {
137c478bd9Sstevel@tonic-gate  if (mem[$6]=="") {
147c478bd9Sstevel@tonic-gate    print "*** free without a malloc at",$6
157c478bd9Sstevel@tonic-gate  }
167c478bd9Sstevel@tonic-gate  mem[$6] = "";
177c478bd9Sstevel@tonic-gate  str[$6] = ""
187c478bd9Sstevel@tonic-gate}
197c478bd9Sstevel@tonic-gate/^string at / {
207c478bd9Sstevel@tonic-gate  addr = $4
217c478bd9Sstevel@tonic-gate  sub("string at " addr " is ","")
227c478bd9Sstevel@tonic-gate  str[addr] = $0
237c478bd9Sstevel@tonic-gate}
247c478bd9Sstevel@tonic-gateEND {
257c478bd9Sstevel@tonic-gate  for(addr in mem){
267c478bd9Sstevel@tonic-gate    if( mem[addr]=="" ) continue
277c478bd9Sstevel@tonic-gate    print mem[addr], str[addr]
287c478bd9Sstevel@tonic-gate  }
297c478bd9Sstevel@tonic-gate}
30