public inbox for dtrace@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH v2] test: Disown child pid for cleaner stderr
@ 2024-10-31  4:49 eugene.loh
  2024-10-31  5:22 ` Kris Van Hees
  2024-11-01 13:42 ` Nick Alcock
  0 siblings, 2 replies; 3+ messages in thread
From: eugene.loh @ 2024-10-31  4:49 UTC (permalink / raw)
  To: dtrace, dtrace-devel

From: Eugene Loh <eugene.loh@oracle.com>

The shell can report when a job is killed, potentially
polluting stderr and thereby mismatching the results file.

When a job is killed at the end of test, appearance of such
reports may depend on timing details:  does the parent test
or the child job terminate first?

Many tests deal with this problem by disowning child jobs.

Disown jobs in a few more possibly problematic tests.

Signed-off-by: Eugene Loh <eugene.loh@oracle.com>
---
 test/unittest/usdt/tst.dlclose1.sh             | 1 +
 test/unittest/usdt/tst.enable_pid.sh           | 2 ++
 test/unittest/usdt/tst.exec-dof-replacement.sh | 1 +
 test/unittest/usdt/tst.nusdtprobes.sh          | 1 +
 4 files changed, 5 insertions(+)

diff --git a/test/unittest/usdt/tst.dlclose1.sh b/test/unittest/usdt/tst.dlclose1.sh
index ee4d95f3b..b65e4de5d 100755
--- a/test/unittest/usdt/tst.dlclose1.sh
+++ b/test/unittest/usdt/tst.dlclose1.sh
@@ -200,6 +200,7 @@ function mywait() {
 
 ./main > myfile.txt &
 pid=$!
+disown %+
 echo started pid $pid
 
 mywait 6 "started"  myfile.txt # wait for process to start
diff --git a/test/unittest/usdt/tst.enable_pid.sh b/test/unittest/usdt/tst.enable_pid.sh
index 91923014d..bbb7680c4 100755
--- a/test/unittest/usdt/tst.enable_pid.sh
+++ b/test/unittest/usdt/tst.enable_pid.sh
@@ -142,8 +142,10 @@ fi
 
 ./main >& out.1 &
 pid1=$!
+disown %+
 ./main >& out.2 &
 pid2=$!
+disown %+
 
 #
 # Run DTrace with different pid probes, each case is its own "epoch":
diff --git a/test/unittest/usdt/tst.exec-dof-replacement.sh b/test/unittest/usdt/tst.exec-dof-replacement.sh
index 9f30bbfcc..f9cf6bdb2 100755
--- a/test/unittest/usdt/tst.exec-dof-replacement.sh
+++ b/test/unittest/usdt/tst.exec-dof-replacement.sh
@@ -81,6 +81,7 @@ fi
 
 ./test1 &
 PROC=$!
+disown %+
 
 # Wait for the exec, then list all the target's probes.
 # We cannot use pure dtrace to do this because it doesn't check
diff --git a/test/unittest/usdt/tst.nusdtprobes.sh b/test/unittest/usdt/tst.nusdtprobes.sh
index 50f18a6ca..4b5050ff9 100755
--- a/test/unittest/usdt/tst.nusdtprobes.sh
+++ b/test/unittest/usdt/tst.nusdtprobes.sh
@@ -121,6 +121,7 @@ for nusdt in "" "-xnusdtprobes=40" "-xnusdtprobes=39"; do
 		for (( immbr = 0; immbr < $nmmbrs; immbr++ )); do
 			./main &
 			pids[$immbr]=$!
+			disown %+
 			for j in `seq 0 9`; do
 				echo testprov${pids[$immbr]} main main foo$j >> check.txt
 			done
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] test: Disown child pid for cleaner stderr
  2024-10-31  4:49 [PATCH v2] test: Disown child pid for cleaner stderr eugene.loh
@ 2024-10-31  5:22 ` Kris Van Hees
  2024-11-01 13:42 ` Nick Alcock
  1 sibling, 0 replies; 3+ messages in thread
From: Kris Van Hees @ 2024-10-31  5:22 UTC (permalink / raw)
  To: eugene.loh; +Cc: dtrace, dtrace-devel

On Thu, Oct 31, 2024 at 12:49:06AM -0400, eugene.loh@oracle.com wrote:
> From: Eugene Loh <eugene.loh@oracle.com>
> 
> The shell can report when a job is killed, potentially
> polluting stderr and thereby mismatching the results file.
> 
> When a job is killed at the end of test, appearance of such
> reports may depend on timing details:  does the parent test
> or the child job terminate first?
> 
> Many tests deal with this problem by disowning child jobs.
> 
> Disown jobs in a few more possibly problematic tests.
> 
> Signed-off-by: Eugene Loh <eugene.loh@oracle.com>

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

> ---
>  test/unittest/usdt/tst.dlclose1.sh             | 1 +
>  test/unittest/usdt/tst.enable_pid.sh           | 2 ++
>  test/unittest/usdt/tst.exec-dof-replacement.sh | 1 +
>  test/unittest/usdt/tst.nusdtprobes.sh          | 1 +
>  4 files changed, 5 insertions(+)
> 
> diff --git a/test/unittest/usdt/tst.dlclose1.sh b/test/unittest/usdt/tst.dlclose1.sh
> index ee4d95f3b..b65e4de5d 100755
> --- a/test/unittest/usdt/tst.dlclose1.sh
> +++ b/test/unittest/usdt/tst.dlclose1.sh
> @@ -200,6 +200,7 @@ function mywait() {
>  
>  ./main > myfile.txt &
>  pid=$!
> +disown %+
>  echo started pid $pid
>  
>  mywait 6 "started"  myfile.txt # wait for process to start
> diff --git a/test/unittest/usdt/tst.enable_pid.sh b/test/unittest/usdt/tst.enable_pid.sh
> index 91923014d..bbb7680c4 100755
> --- a/test/unittest/usdt/tst.enable_pid.sh
> +++ b/test/unittest/usdt/tst.enable_pid.sh
> @@ -142,8 +142,10 @@ fi
>  
>  ./main >& out.1 &
>  pid1=$!
> +disown %+
>  ./main >& out.2 &
>  pid2=$!
> +disown %+
>  
>  #
>  # Run DTrace with different pid probes, each case is its own "epoch":
> diff --git a/test/unittest/usdt/tst.exec-dof-replacement.sh b/test/unittest/usdt/tst.exec-dof-replacement.sh
> index 9f30bbfcc..f9cf6bdb2 100755
> --- a/test/unittest/usdt/tst.exec-dof-replacement.sh
> +++ b/test/unittest/usdt/tst.exec-dof-replacement.sh
> @@ -81,6 +81,7 @@ fi
>  
>  ./test1 &
>  PROC=$!
> +disown %+
>  
>  # Wait for the exec, then list all the target's probes.
>  # We cannot use pure dtrace to do this because it doesn't check
> diff --git a/test/unittest/usdt/tst.nusdtprobes.sh b/test/unittest/usdt/tst.nusdtprobes.sh
> index 50f18a6ca..4b5050ff9 100755
> --- a/test/unittest/usdt/tst.nusdtprobes.sh
> +++ b/test/unittest/usdt/tst.nusdtprobes.sh
> @@ -121,6 +121,7 @@ for nusdt in "" "-xnusdtprobes=40" "-xnusdtprobes=39"; do
>  		for (( immbr = 0; immbr < $nmmbrs; immbr++ )); do
>  			./main &
>  			pids[$immbr]=$!
> +			disown %+
>  			for j in `seq 0 9`; do
>  				echo testprov${pids[$immbr]} main main foo$j >> check.txt
>  			done
> -- 
> 2.43.5
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] test: Disown child pid for cleaner stderr
  2024-10-31  4:49 [PATCH v2] test: Disown child pid for cleaner stderr eugene.loh
  2024-10-31  5:22 ` Kris Van Hees
@ 2024-11-01 13:42 ` Nick Alcock
  1 sibling, 0 replies; 3+ messages in thread
From: Nick Alcock @ 2024-11-01 13:42 UTC (permalink / raw)
  To: eugene.loh; +Cc: dtrace, dtrace-devel

On 31 Oct 2024, eugene loh verbalised:

> From: Eugene Loh <eugene.loh@oracle.com>
>
> The shell can report when a job is killed, potentially
> polluting stderr and thereby mismatching the results file.
>
> When a job is killed at the end of test, appearance of such
> reports may depend on timing details:  does the parent test
> or the child job terminate first?
>
> Many tests deal with this problem by disowning child jobs.
>
> Disown jobs in a few more possibly problematic tests.

> Signed-off-by: Eugene Loh <eugene.loh@oracle.com>

Reviewed-by: Nick Alcock <nick.alcock@oracle.com>

(My only reason for not doing that already was that I mistakenly thought
disown didn't do anything in noninteractive shells.)

-- 
NULL && (void)

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-01 13:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-31  4:49 [PATCH v2] test: Disown child pid for cleaner stderr eugene.loh
2024-10-31  5:22 ` Kris Van Hees
2024-11-01 13:42 ` Nick Alcock

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox