Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2006/0223/3

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


acid: avoid runtime error in thread library
 [rsc] --rw-rw-r-- M 1635703 glenda sys 6143 Feb 23 06:41 sys/lib/acid/thread
	/n/sourcesdump/2006/0223/plan9/sys/lib/acid/thread:72,78 - 
	/n/sourcesdump/2006/0224/plan9/sys/lib/acid/thread:72,80
	  			return sym[0];
	  		s = tail s;
	  	}
	- 	return itoa(a, "%x");
	+ 	if a == {} then
	+ 		return "{}";
	+ 	return itoa(a\X, "%x");
	  }
	  
	  stkignorelist = {};
	/n/sourcesdump/2006/0223/plan9/sys/lib/acid/thread:82,88 - 
	/n/sourcesdump/2006/0224/plan9/sys/lib/acid/thread:84,90
	  }
	  
	  defn threadstkline(T){
	- 	local stk, frame, pc, pc0, file, lastpc0, s, sym, i, stop;
	+ 	local ostk, stk, frame, pc, pc0, file, lastpc0, s, sym, i, stop;
	  
	  	if T.state == Running then{
	  		pc = *PC;
	/n/sourcesdump/2006/0223/plan9/sys/lib/acid/thread:91,99 - 
	/n/sourcesdump/2006/0224/plan9/sys/lib/acid/thread:93,103
	  		pc = labpc(T.sched);
	  		stk = strace(labpc(T.sched), labsp(T.sched), 0);
	  	}
	+ 	firstpc = pc;
	  	lastpc0 = 0;
	  	pc0 = 0;
	  	stop = 0;
	+ 	ostk = stk;
	  	while stk && !stop do {
	  		file = pcfile(pc);
	  		if !regexp("^/sys/src/libc/", file)
	/n/sourcesdump/2006/0223/plan9/sys/lib/acid/thread:100,106 - 
	/n/sourcesdump/2006/0224/plan9/sys/lib/acid/thread:104,114
	  		&& !regexp("^/sys/src/libthread/", file) 
	  		&& match(file, stkignore)==-1 then
	  			stop = 1;
	- 		else{
	+ 		else if stk[0][1] == 0xfefefefe then {
	+ 			pc = ostk[0][1];
	+ 			pc0 = ostk[1][0];
	+ 			stop = 1;
	+ 		}else{
	  			lastpc0 = pc0;
	  			frame = head stk;
	  			stk = tail stk;


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].