Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2006/0404/5

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


libndb: more memory accounting, fix leak tickled by dhcpd
 [rsc] --rw-rw-r-- M 337084 glenda sys 4412 Apr  4 14:14 sys/include/ndb.h
	/n/sourcesdump/2006/0404/plan9/sys/include/ndb.h:152,154 - 
	/n/sourcesdump/2006/0405/plan9/sys/include/ndb.h:152,155
	  void		ndbsetval(Ndbtuple*, char*, int);
	  Ndbtuple*	ndbsnext(Ndbs*, char*, char*);
	  Ndbtuple*	ndbsubstitute(Ndbtuple*, Ndbtuple*, Ndbtuple*);
	+ void		ndbsetmalloctag(Ndbtuple*, uintptr);
 [rsc] --rw-rw-r-- M 337084 glenda sys 1796 Apr  4 14:14 sys/src/libndb/csgetval.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/csgetval.c:103,107 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/csgetval.c:103,108
	  		}
	  		free(p);
	  	}
	+ 	ndbsetmalloctag(t, getcallerpc(&netroot));
	  	return t;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 1178 Apr  4 14:14 sys/src/libndb/csipinfo.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/csipinfo.c:63,68 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/csipinfo.c:63,68
	  	}
	  	close(fd);
	  
	- 	setmalloctag(first, getcallerpc(&netroot));
	+ 	ndbsetmalloctag(first, getcallerpc(&netroot));
	  	return first;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 2883 Apr  4 14:14 sys/src/libndb/dnsquery.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/dnsquery.c:63,68 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/dnsquery.c:63,69
	  		t = doquery(fd, val, type);
	  
	  	close(fd);
	+ 	ndbsetmalloctag(t, getcallerpc(&net));
	  	return t;
	  }
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/dnsquery.c:151,156 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/dnsquery.c:152,157
	  		}
	  	}
	  
	- 	setmalloctag(first, getcallerpc(&fd));
	+ 	ndbsetmalloctag(first, getcallerpc(&fd));
	  	return first;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 1544 Apr  4 14:14 sys/src/libndb/ndbaux.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbaux.c:86,94 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbaux.c:86,95
	  		last = t;
	  		t->line = 0;
	  		t->entry = 0;
	+ 		setmalloctag(t, getcallerpc(&cp));
	  	}
	  	if(first)
	  		last->line = first;
	- 	setmalloctag(first, getcallerpc(&cp));
	+ 	ndbsetmalloctag(first, getcallerpc(&cp));
	  	return first;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 2246 Apr  4 14:14 sys/src/libndb/ndbcache.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbcache.c:64,69 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbcache.c:64,70
	  		last = to_t;
	  		newline = from_t->line != from_t->entry;
	  	}
	+ 	ndbsetmalloctag(first, getcallerpc(&db));
	  	return first;
	  }
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbcache.c:127,132 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbcache.c:128,134
	  	*l = nil;
	  err:
	  	ndbcachefree(c);
	+ 	ndbsetmalloctag(t, getcallerpc(&db));
	  	return t;
	  }
	  
 [rsc] --rw-rw-r-- M 337084 presotto sys 297 Apr  4 14:14 sys/src/libndb/ndbconcatenate.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbconcatenate.c:14,18 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbconcatenate.c:14,19
	  	for(t = a; t->entry; t = t->entry)
	  		;
	  	t->entry = b;
	+ 	ndbsetmalloctag(a, getcallerpc(&a));
	  	return a;
	  }
 [rsc] --rw-rw-r-- M 337084 presotto sys 474 Apr  4 14:14 sys/src/libndb/ndbdiscard.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbdiscard.c:25,29 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbdiscard.c:25,30
	  	a->entry = nil;
	  	ndbfree(a);
	  
	+ 	ndbsetmalloctag(t, getcallerpc(&t));
	  	return t;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 1123 Apr  4 14:14 sys/src/libndb/ndbfree.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbfree.c:61,65 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbfree.c:61,76
	  	t->val = t->valbuf;
	  	if(val != nil)
	  		ndbsetval(t, val, strlen(val));
	+ 	ndbsetmalloctag(t, getcallerpc(&attr));
	  	return t;	
	+ }
	+ 
	+ /*
	+  *  set owner of a tuple
	+  */
	+ void
	+ ndbsetmalloctag(Ndbtuple *t, uintptr tag)
	+ {
	+ 	for(; t; t=t->entry)
	+ 		setmalloctag(t, tag);
	  }
 [rsc] --rw-rw-r-- M 337084 presotto sys 876 Apr  4 14:14 sys/src/libndb/ndbgetipaddr.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbgetipaddr.c:16,21 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbgetipaddr.c:16,22
	  	attr = ipattr(val);
	  	if(strcmp(attr, "ip") == 0){
	  		it = ndbnew("ip", val);
	+ 		ndbsetmalloctag(it, getcallerpc(&db));
	  		return it;
	  	}
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbgetipaddr.c:43,47 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbgetipaddr.c:44,49
	  		}
	  	}
	  
	+ 	ndbsetmalloctag(first, getcallerpc(&db));
	  	return first;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 1348 Apr  4 14:14 sys/src/libndb/ndbgetval.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbgetval.c:71,75 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbgetval.c:71,76
	  		}
	  		free(p);
	  	}
	+ 	ndbsetmalloctag(t, getcallerpc(&db));
	  	return t;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 5276 Apr  4 14:14 sys/src/libndb/ndbhash.c
	[diffs elided - too long]
	[diff -c /n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbhash.c /n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbhash.c]
 [rsc] --rw-rw-r-- M 337084 glenda sys 5105 Apr  4 14:14 sys/src/libndb/ndbipinfo.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbipinfo.c:40,45 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbipinfo.c:40,46
	  		}
	  		strncpy(t->attr, p, sizeof(t->attr)-1);
	  	}
	+ 	ndbsetmalloctag(first, getcallerpc(&argc));
	  	return first;
	  }
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbipinfo.c:97,102 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbipinfo.c:98,104
	  		if(nf->ptr & Ffound)
	  			nf->ptr = (nf->ptr & ~Ffound) | Fignore;
	  
	+ 	ndbsetmalloctag(t, getcallerpc(&db));
	  	return t;
	  }
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbipinfo.c:136,147 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbipinfo.c:138,152
	  			else
	  				ipmove(mask, defmask(net));
	  			masklen = prefixlen(mask);
	- 			if(masklen <= prefix)
	+ 			if(masklen <= prefix){
	  				t = ndbconcatenate(t, filter(db, nt, f));
	- 		} else
	- 			ndbfree(nt);
	+ 				nt = nil;
	+ 			}
	+ 		}
	+ 		ndbfree(nt);
	  		nt = ndbsnext(&s, "ip", netstr);
	  	}
	+ 	ndbsetmalloctag(t, getcallerpc(&db));
	  	return t;
	  }
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbipinfo.c:238,242 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbipinfo.c:243,248
	  	}
	  
	  	ndbfree(f);
	+ 	ndbsetmalloctag(t, getcallerpc(&db));
	  	return t;
	  }
 [rsc] --rw-rw-r-- M 337084 glenda sys 1207 Apr  4 14:14 sys/src/libndb/ndbparse.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbparse.c:44,49 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbparse.c:44,50
	  		t = _ndbparseline(line);
	  		if(t == 0)
	  			continue;
	+ 		setmalloctag(t, getcallerpc(&db));
	  		if(first)
	  			last->entry = t;
	  		else
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbparse.c:52,57 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbparse.c:53,58
	  		while(last->entry)
	  			last = last->entry;
	  	}
	- 	setmalloctag(first, getcallerpc(&db));
	+ 	ndbsetmalloctag(first, getcallerpc(&db));
	  	return first;
	  }
 [rsc] --rw-rw-r-- M 337084 presotto sys 867 Apr  4 14:14 sys/src/libndb/ndbsubstitute.c
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbsubstitute.c:9,18 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbsubstitute.c:9,23
	  {
	  	Ndbtuple *nt;
	  
	- 	if(a == b)
	+ 	if(a == b){
	+ 		ndbsetmalloctag(t, getcallerpc(&t));
	  		return t;
	- 	if(b == nil)
	- 		return ndbdiscard(t, a);
	+ 	}
	+ 	if(b == nil){
	+ 		t = ndbdiscard(t, a);
	+ 		ndbsetmalloctag(t, getcallerpc(&t));
	+ 		return t;
	+ 	}
	  
	  	/* all pointers to a become pointers to b */
	  	for(nt = t; nt != nil; nt = nt->entry){
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbsubstitute.c:23,31 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbsubstitute.c:28,35
	  	}
	  
	  	/* end of b chain points to a's successors */
	- 	for(nt = b; nt->entry; nt = nt->entry){
	+ 	for(nt = b; nt->entry; nt = nt->entry)
	  		nt->line = nt->entry;
	- 	}
	  	nt->line = a->line;
	  	nt->entry = a->entry;
	  
	/n/sourcesdump/2006/0404/plan9/sys/src/libndb/ndbsubstitute.c:32,39 - 
	/n/sourcesdump/2006/0405/plan9/sys/src/libndb/ndbsubstitute.c:36,46
	  	a->entry = nil;
	  	ndbfree(a);
	  
	- 	if(a == t)
	+ 	if(a == t){
	+ 		ndbsetmalloctag(b, getcallerpc(&t));
	  		return b;
	- 	else
	+ 	}else{
	+ 		ndbsetmalloctag(t, getcallerpc(&t));
	  		return t;
	+ 	}
	  }


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].