In create_sig_proc, the child process waits for the parent to wake it
with a signal. This doesn't actually solve anything, and the
implementation with pause() syscall is inherently racy (the race
results in a deadlock). This patch removes it; it doesn't make the
function race-free (it's possible the child will send the signal
before the parent had chance to run), but this is the best you can
get.
Regards
Jiri Palecek
Signed-off-by: Jiri Palecek <[email protected]>
---
testcases/kernel/syscalls/utils/common_j_h.c | 10 ----------
1 files changed, 0 insertions(+), 10 deletions(-)
diff --git a/testcases/kernel/syscalls/utils/common_j_h.c
b/testcases/kernel/syscalls/utils/common_j_h.c
index cda3198..d122ff9 100644
--- a/testcases/kernel/syscalls/utils/common_j_h.c
+++ b/testcases/kernel/syscalls/utils/common_j_h.c
@@ -102,23 +102,14 @@ int cleanup_euid(uid_t old_uid)
/*
* Generate a child process which will send a signal
*/
-static void sighandler_for_sig_proc(int sig)
-{
- if (sig == SIGUSR2)
- return;
- return;
-}
-
pid_t create_sig_proc(unsigned long usec, int sig)
{
pid_t pid, cpid;
- signal(SIGUSR2, sighandler_for_sig_proc);
pid = getpid();
cpid = fork();
switch (cpid) {
case 0:
- pause();
usleep(usec);
kill(pid, sig);
_exit(0);
@@ -127,7 +118,6 @@ pid_t create_sig_proc(unsigned long usec, int sig)
EPRINTF("fork failed.\n");
return cpid;
default:
- kill(cpid, SIGUSR2);
return cpid;
}
}
--
1.6.2.4
------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list