[DTrace-devel] [PATCH v2 03/12] Overhaul the stackdepth value test
Kris Van Hees
kris.van.hees at oracle.com
Fri Jun 11 13:01:48 PDT 2021
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
On Tue, Jun 08, 2021 at 05:54:22PM -0400, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
>
> This test checks the value of stackdepth by using stack() as a
> consistency check. Address the following shortcomings:
>
> 1) The test fires in BEGIN, which no longer has a kernel stack.
>
> 2) The test incorrectly counts stack frames.
>
> 3) The test passes because neither stack() nor stackdepth is implemented!
> (Currently, stack() always reports nothing and stackdepth always 0.)
>
> 4) An ERROR in the D script would cause the test to hang.
>
> The corrected test will XFAIL until stack() and stackdepth are implemented.
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
> test/unittest/stackdepth/tst.value.d | 14 +++++++++++++-
> test/unittest/stackdepth/tst.value.r.p | 8 +++++---
> 2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/test/unittest/stackdepth/tst.value.d b/test/unittest/stackdepth/tst.value.d
> index 857728bd..a729bd3f 100644
> --- a/test/unittest/stackdepth/tst.value.d
> +++ b/test/unittest/stackdepth/tst.value.d
> @@ -1,10 +1,12 @@
> /*
> * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2020, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 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.
> */
> +/* @@xfail: dtv2 */
>
> +#pragma D option destructive
> #pragma D option quiet
>
> /*
> @@ -16,6 +18,11 @@
> */
>
> BEGIN
> +{
> + system("echo write something > /dev/null");
> +}
> +
> +fbt::__vfs_write:entry
> {
> printf("DEPTH %d\n", stackdepth);
> printf("TRACE BEGIN\n");
> @@ -23,3 +30,8 @@ BEGIN
> printf("TRACE END\n");
> exit(0);
> }
> +
> +ERROR
> +{
> + exit(1);
> +}
> diff --git a/test/unittest/stackdepth/tst.value.r.p b/test/unittest/stackdepth/tst.value.r.p
> index d5143e38..9b071181 100755
> --- a/test/unittest/stackdepth/tst.value.r.p
> +++ b/test/unittest/stackdepth/tst.value.r.p
> @@ -1,6 +1,6 @@
> #!/usr/bin/gawk -f
> # Oracle Linux DTrace.
> -# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
> +# Copyright (c) 2016, 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.
>
> @@ -12,12 +12,12 @@
> getline;
> count = 0;
> while ($0 !~ /^TRACE END/) {
> + if (NF)
> + count++;
> if (getline != 1) {
> print "EOF or error while processing stack\n";
> exit 0;
> }
> - if (NF)
> - count++;
> }
> }
>
> @@ -26,6 +26,8 @@ END {
> printf "Stack depth too large (%d > %d)\n", depth, count;
> else if (count > depth)
> printf "Stack depth too small (%d < %d)\n", depth, count;
> + else if (count == 0)
> + printf "Stack depth is 0\n";
> else
> printf "Stack depth OK\n";
> }
> --
> 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