[DTrace-devel] [PATCH 03/05] agg: report error if aggsize is too small
Kris Van Hees
kris.van.hees at oracle.com
Mon May 8 16:38:08 UTC 2023
On Mon, May 08, 2023 at 12:33:38PM -0400, Eugene Loh via DTrace-devel wrote:
> Reviewed-by: Eugene Loh <eugene.loh at oracle.com>
> but...
>
> On 5/5/23 11:31, Kris Van Hees via DTrace-devel wrote:
> > When aggregations are used, ensure that the aggsize value is sufficient
> > to hold at least a single aggregation.
>
> This comment does not hold. In fact, it conflicts with the subject line.
Yes, foolishly forgot to update that. Fixed.
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> > ---
> > libdtrace/dt_bpf.c | 3 +--
> > test/unittest/aggs/err.aggsize-too-small.d | 26 ++++++++++++++++++++++
> > test/unittest/aggs/err.aggsize-too-small.r | 3 +++
> > 3 files changed, 30 insertions(+), 2 deletions(-)
> > create mode 100644 test/unittest/aggs/err.aggsize-too-small.d
> > create mode 100644 test/unittest/aggs/err.aggsize-too-small.r
> >
> > diff --git a/libdtrace/dt_bpf.c b/libdtrace/dt_bpf.c
> > index 18aa07af..b553b33f 100644
> > --- a/libdtrace/dt_bpf.c
> > +++ b/libdtrace/dt_bpf.c
> > @@ -520,9 +520,8 @@ gmap_create_aggs(dtrace_hdl_t *dtp)
> > nelems = dtp->dt_options[DTRACEOPT_AGGSIZE] /
> > (dtp->dt_maxtuplesize + dtp->dt_maxaggdsize);
> > -
> > if (nelems == 0)
> > - return 0;
> > + return dt_set_errno(dtp, EDT_BUFTOOSMALL);
> > dtp->dt_aggmap_fd = create_gmap_of_maps(dtp, "aggs",
> > BPF_MAP_TYPE_ARRAY_OF_MAPS,
> > diff --git a/test/unittest/aggs/err.aggsize-too-small.d b/test/unittest/aggs/err.aggsize-too-small.d
> > new file mode 100644
> > index 00000000..8bd12381
> > --- /dev/null
> > +++ b/test/unittest/aggs/err.aggsize-too-small.d
> > @@ -0,0 +1,26 @@
> > +/*
> > + * Oracle Linux DTrace.
> > + * Copyright (c) 2023, 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: If aggsize is too small to hold a single aggregation, report an
> > + * error.
> > + *
> > + * SECTION: Aggregations/Aggregations
> > + */
> > +
> > +#pragma D option aggsize=8
> > +
> > +BEGIN
> > +{
> > + @ = count();
> > + exit(0);
> > +}
> > +
> > +ERROR
> > +{
> > + exit(0);
> > +}
> > diff --git a/test/unittest/aggs/err.aggsize-too-small.r b/test/unittest/aggs/err.aggsize-too-small.r
> > new file mode 100644
> > index 00000000..b0a37c5d
> > --- /dev/null
> > +++ b/test/unittest/aggs/err.aggsize-too-small.r
> > @@ -0,0 +1,3 @@
> > +-- @@stderr --
> > +dtrace: script 'test/unittest/aggs/err.aggsize-too-small.d' matched 2 probes
> > +dtrace: could not enable tracing: Enabling exceeds size of buffer
>
> _______________________________________________
> 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