On Thu, Jul 24, 2008 at 12:12:01PM -0700, Chris Kiick wrote:
> Hi,
> Searched for similar errors and nothing came up. Anybody know what this is?
> When using aggregate stddev, and then trying to print it at END, using
> printa, I get this error:
> dtrace: processing aborted: Invalid return value from callback
> avg works fine. Tried on two recent builds of solaris (build 89 and build
> 94), on two difference sparc systems.
> Here's a sample script:
>
Easier test case:
--- cut here ---
#!/usr/sbin/dtrace -Fs
BEGIN
{
@ = stddev(100);
@ = stddev(200);
@ = stddev(300);
printa("[EMAIL PROTECTED]", @);
}
--- cut here ---
Looks like we're missing a printf handler for stddev:
usr/src/lib/libdtrace/common/dt_printf.c:
...
1213 static int
1214 pfprint_average(dtrace_hdl_t *dtp, FILE *fp, const char *format,
1215 const dt_pfargd_t *pfd, const void *addr, size_t size, uint64_t normal)
1216 {
1217 const uint64_t *data = addr;
1218
1219 if (size != sizeof (uint64_t) * 2)
1220 return (dt_set_errno(dtp, EDT_DMISMATCH));
1221
1222 return (dt_printf(dtp, fp, format,
1223 data[0] ? data[1] / normal / data[0] : 0));
1224 }
...
1242 static int
1243 dt_printf_format(dtrace_hdl_t *dtp, FILE *fp, const dt_pfargv_t *pfv,
1244 const dtrace_recdesc_t *recs, uint_t nrecs, const void *buf,
1245 size_t len, const dtrace_aggdata_t **aggsdata, int naggvars)
1246 {
...
1414 switch (rec->dtrd_action) {
1415 case DTRACEAGG_AVG:
1416 func = pfprint_average;
1417 break;
...
1430 default:
1431 func = pfc->pfc_print;
1432 break;
1433 }
We need a matching entry for stddev.
Cheers,
- jonathan
_______________________________________________
dtrace-discuss mailing list
[email protected]