[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