From: Daniel A. S. <da...@us...> - 2008-08-06 00:36:45
|
Hi Remigiusz, On 06/08/2008, at 1:20, Remigiusz Jan Andrzej Modrzejewski wrote: > > Not the first, probably not the last - problem with Tcl_EvalObjv. with the changes made to the testsuite in #25 (to make it run on Mac OS X), I cannot reproduce this crash... I'll have a more detailed look tomorrow (on solaris) > The test should fire the callback two times for probes > syscall::exec:entry and syscall::exec:return. that now works fine for me (against tcl 8.4, need the new buildsystem first to easily test against 8.5) One possible point of confusion I note is with handling of 'args' (both in the testsuite and in the spec & code), note that the 'args' name is special in tcl argument lists, if it is in the last position, it signifies 0 or more optional arguments (passed to the proc as a list in the 'args' var), i.e. something like % proc callback {probe args} {set args} will return % puts [list [callback p]] {} % puts [list [callback p {}]] {{}} % puts [list [callback p x y]] {x y} to avoid confusion, IMO an API like [::dtrace::list $p callback] should thus be followed by an optional number of arguments, and not a single list of arguments, and similarly for the callbacks that take 'args' (which probably means the order of the arguments to the 'probe_output' callback should be changed so that the optional args come last) > BTW - how should I signalize an error within the callback? Like the > failed Tcl_EvalObjv (if it would ever fail without bringing the > whole thing down)? via bgerror, that's the standard way in tcl to report errors from callbacks like event handlers etc, c.f. Tcl_BackgroundError(3) Cheers, Daniel -- ** Daniel A. Steffen ** ** <mailto:da...@us...> ** |