Bug #39992 [Com]: proc_terminate() leaves children of child running

From: Date: Fri, 17 Oct 2014 12:12:53 +0000
Subject: Bug #39992 [Com]: proc_terminate() leaves children of child running
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-188157@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=39992&edit=1

 ID:                 39992
 Comment by:         alanevans+phpnet at gmail dot com
 Reported by:        nlopess@php.net
 Summary:            proc_terminate() leaves children of child running
 Status:             Open
 Type:               Bug
 Package:            Program Execution
 Operating System:   linux
 PHP Version:        6CVS-2006-12-30 (CVS)
 Block user comment: N
 Private report:     N

 New Comment:

I've happened on this same issue also, though I also find that proc_get_status returns only the
pid of some /bin/sh wrapper.

I've tried on PHP 5.5 and 5.6,

Interesting to note is that the behaviour on OSX is quite easy to handle: there is no /bin/sh
wrapper process at all in that case, but on Ubuntu (currently tested on lucid), you only ever have
access to the /bin/sh proc: the process you actually started and the one that you care about is left
running.

I'm going to work around this by having child processes write their own pids to a file and use
those for signalling.


Previous Comments:
------------------------------------------------------------------------
[2010-03-13 20:19:57] mast at imast dot ru

Well I've also just found this problem.
I run sh script via proc_open and if this script runs child processes that could 
hang, they will not be killed if you run proc_terminate().

To fix it I use:

// As soon proc is started
$status = proc_get_status($proc);
posix_setpgid($status['pid'], $status['pid']);

// When I need to kill it
posix_kill(-$status['pid'], 9); // sends SIGKILL to all processes inside group
proc_close($proc);

Why not to add this into proc_terminate() implementation?

------------------------------------------------------------------------
[2010-02-17 08:23:48] gryp at dakin dot be

We're having the same problem by starting java.
(the java process starts as root and forks itself to another userid)

the 'sh' gets killed but our java process keeps on running

------------------------------------------------------------------------
[2008-08-12 22:03:45] nlopess@php.net

Yes, I'm still able to reproduce it. In some systems you may need higher proviledges in order
to reproduce this bug.

------------------------------------------------------------------------
[2008-08-12 16:28:58] jani@php.net

Nuno, is this still valid bug? I can't reproduce it even with PHP 5.2.6..

------------------------------------------------------------------------
[2006-12-30 15:54:27] nlopess@php.net

Ah I forgot: removing the "2>&1" part everything works fine.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=39992


--
Edit this bug report at https://bugs.php.net/bug.php?id=39992&edit=1


Thread (15 messages)

« previous php.bugs (#188157) next »