diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c @@ -472,14 +472,18 @@ } if (buf->dtbd_drops != 0) { - xo_open_instance("probes"); - dt_oformat_drop(dtp, cpu); - if (dt_handle_cpudrop(dtp, cpu, - DTRACEDROP_AGGREGATION, buf->dtbd_drops) == -1) { + int error; + + if (dtp->dt_oformat) { + xo_open_instance("probes"); + dt_oformat_drop(dtp, cpu); + } + error = dt_handle_cpudrop(dtp, cpu, DTRACEDROP_AGGREGATION, + buf->dtbd_drops); + if (dtp->dt_oformat) xo_close_instance("probes"); + if (error != 0) return (-1); - } - xo_close_instance("probes"); } if (buf->dtbd_size == 0) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c @@ -3678,10 +3678,13 @@ */ buf->dtbd_drops = 0; - xo_open_instance("probes"); - dt_oformat_drop(dtp, cpu); + if (dtp->dt_oformat) { + xo_open_instance("probes"); + dt_oformat_drop(dtp, cpu); + } rval = dt_handle_cpudrop(dtp, cpu, DTRACEDROP_PRINCIPAL, drops); - xo_close_instance("probes"); + if (dtp->dt_oformat) + xo_close_instance("probes"); return (rval); } @@ -4187,11 +4190,15 @@ for (i = 0; i < max_ncpus; i++) { if (drops[i] != 0) { int error; - xo_open_instance("probes"); - dt_oformat_drop(dtp, i); + + if (dtp->dt_oformat) { + xo_open_instance("probes"); + dt_oformat_drop(dtp, i); + } error = dt_handle_cpudrop(dtp, i, DTRACEDROP_PRINCIPAL, drops[i]); - xo_close_instance("probes"); + if (dtp->dt_oformat) + xo_close_instance("probes"); if (error != 0) return (error); }