[DTrace-devel] [PATCH 13/13] Restore error message

Kris Van Hees kris.van.hees at oracle.com
Tue Dec 8 11:13:32 PST 2020


On Wed, Dec 02, 2020 at 01:54:58PM -0500, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> An error message was "#if 0"ed out during development,
> producing behavior like this:
>     # dtrace -n 'BEGIN {avg(1); exit(0)}'
>     dt_cg_node() - FUNC aggregating function avg()
>     dtrace: description 'BEGIN ' matched 1 probe
>     BPF: call to invalid destination
>     BPF: verification time 14 usec
>     BPF: stack depth 0+0
>     BPF: processed 0 insns (limit 1000000) max_states_per_insn 0 ...
>     dtrace: could not enable tracing: BPF program load for 'dtrac...
> 
> Restore the message.  Add a test.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  libdtrace/dt_cg.c                            |  4 ----
>  test/unittest/aggs/err.D_CG_EXPR.from_expr.d | 21 ++++++++++++++++++++
>  2 files changed, 21 insertions(+), 4 deletions(-)
>  create mode 100644 test/unittest/aggs/err.D_CG_EXPR.from_expr.d
> 
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 3a965265..fb67be58 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -2842,16 +2842,12 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
>  
>  		switch (dnp->dn_kind) {
>  		case DT_NODE_FUNC:
> -if ((idp = dnp->dn_ident)->di_kind != DT_IDENT_FUNC)
> -  fprintf(stderr, "%s() - FUNC %s %s()\n", __func__, dt_idkind_name(idp->di_kind), idp->di_name);
> -#if 0
>  			if ((idp = dnp->dn_ident)->di_kind != DT_IDENT_FUNC) {
>  				dnerror(dnp, D_CG_EXPR, "%s %s( ) may not be "
>  				    "called from a D expression (D program "
>  				    "context required)\n",
>  				    dt_idkind_name(idp->di_kind), idp->di_name);
>  			}
> -#endif
>  
>  			dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp);
>  
> diff --git a/test/unittest/aggs/err.D_CG_EXPR.from_expr.d b/test/unittest/aggs/err.D_CG_EXPR.from_expr.d
> new file mode 100644
> index 00000000..1b176412
> --- /dev/null
> +++ b/test/unittest/aggs/err.D_CG_EXPR.from_expr.d
> @@ -0,0 +1,21 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION:
> + *	Aggregations cannot be called from D expressions.
> + *
> + * SECTION: Aggregations/Clearing aggregations
> + *
> + *
> + */
> +
> +BEGIN
> +{
> +	avg(1);
> +	exit(0);
> +}
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list