[DTrace-devel] [PATCH] Add tstring free test

Kris Van Hees kris.van.hees at oracle.com
Wed Dec 8 05:37:15 UTC 2021


On Tue, Dec 07, 2021 at 02:59:28PM -0500, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Commit cd179d39f759
> ("Ensure proper validation checks are done before freeing a tstring")
> was supposed to have included a test.  Add it.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

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

... and added to dev

> ---
>  libdtrace/dt_cg.c                        |  1 +
>  test/unittest/codegen/tst.tstring_free.d | 29 ++++++++++++++++++++++++
>  test/unittest/codegen/tst.tstring_free.r |  1 +
>  3 files changed, 31 insertions(+)
>  create mode 100644 test/unittest/codegen/tst.tstring_free.d
>  create mode 100644 test/unittest/codegen/tst.tstring_free.r
> 
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 48a61b8f..ed05b789 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -877,6 +877,7 @@ dt_cg_tstring_xfree(dt_pcb_t *pcb, uint64_t offset)
>  	}
>  
>  	assert(i < DT_TSTRING_SLOTS);
> +	assert(ts->in_use != 0);
>  
>  	ts->in_use = 0;
>  }
> diff --git a/test/unittest/codegen/tst.tstring_free.d b/test/unittest/codegen/tst.tstring_free.d
> new file mode 100644
> index 00000000..71c70463
> --- /dev/null
> +++ b/test/unittest/codegen/tst.tstring_free.d
> @@ -0,0 +1,29 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2021, 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.
> + */
> +
> +/*
> + * Stress test some tstring-free cases.
> + */
> +
> +#pragma D option quiet
> +
> +BEGIN {
> +	trace(
> +	    (x = strjoin("abc", "def")) ==
> +	    (y = strjoin("abc", "def")) ? 0 : 1);
> +	trace(strjoin(
> +	    (x = strjoin("abc", "def")),
> +	    (y = strjoin("ABC", "DEF"))));
> +	trace(substr(
> +	    (x = strjoin("123", "456")),
> +	    2));
> +	trace(x = strjoin("abc", "def"));
> +	trace(x =
> +	    (y = strjoin("ABC", "DEF")));
> +
> +	exit(0);
> +}
> diff --git a/test/unittest/codegen/tst.tstring_free.r b/test/unittest/codegen/tst.tstring_free.r
> new file mode 100644
> index 00000000..bdc7cf65
> --- /dev/null
> +++ b/test/unittest/codegen/tst.tstring_free.r
> @@ -0,0 +1 @@
> +0abcdefABCDEF3456abcdefABCDEF
> -- 
> 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