Skip to content

eval* crashes when handling exception

with-all-output-to-string expects a thunk, but eval* calls it with (write-exception exn). This leads to a crash, for instance when it's called from geiser-autodoc:

(geiser-autodoc '(chicken))
Error: (#f) "unbound variable": (geiser#cleanup-tasks)
Call history: 


Error: call of non-procedure: #<unspecified>

	Call history:

	geiser/chicken/src/geiser/chicken5.scm:93: g168	  
	geiser/chicken/src/geiser/chicken5.scm:93: ##sys#print	  
	geiser/chicken/src/geiser/chicken5.scm:93: ##sys#print	  
	geiser/chicken/src/geiser/chicken5.scm:96: chicken.condition#condition-property-accessor	  
	geiser/chicken/src/geiser/chicken5.scm:93: g170	  
	geiser/chicken/src/geiser/chicken5.scm:93: ##sys#print	  
	geiser/chicken/src/geiser/chicken5.scm:93: chicken.base#get-output-string	  
	geiser/chicken/src/geiser/chicken5.scm:93: scheme#display	  
	geiser/chicken/src/geiser/chicken5.scm:97: scheme#newline	  
	geiser/chicken/src/geiser/chicken5.scm:98: scheme#display	  
	geiser/chicken/src/geiser/chicken5.scm:98: scheme#newline	  
	geiser/chicken/src/geiser/chicken5.scm:99: chicken.condition#condition-property-accessor	  
	geiser/chicken/src/geiser/chicken5.scm:99: g183	  
	geiser/chicken/src/geiser/chicken5.scm:100: scheme#newline	  
	geiser/chicken/src/geiser/chicken5.scm:104: chicken.port#with-output-to-string	  
	geiser/chicken/src/geiser/chicken5.scm:106: chicken.port#with-error-output-to-port

I'll submit a patch for it. Tested using current emacs-geiser/chicken's master and CHICKEN 5.3.0.