diff --git a/src/Symfony/Component/Process/Process.php b/src/Symfony/Component/Process/Process.php index d83222043b..4346cbff2b 100644 --- a/src/Symfony/Component/Process/Process.php +++ b/src/Symfony/Component/Process/Process.php @@ -626,9 +626,13 @@ class Process $this->signal($signal ?: SIGKILL); } } - - $this->updateStatus(false); } + + $this->updateStatus(false); + if ($this->processInformation['running']) { + $this->close(); + } + $this->status = self::STATUS_TERMINATED; return $this->exitcode; diff --git a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php index fbb891200e..15c309aef1 100644 --- a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php +++ b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php @@ -477,6 +477,21 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase $this->assertFalse($process->isSuccessful()); } + public function testStartAfterATimeout() + { + $process = $this->getProcess('php -r "while(true) {echo \'\'; usleep(1000); }"'); + $process->setTimeout(0.1); + try { + $process->run(); + $this->fail('An exception should have been raised.'); + } catch (\Exception $e) { + + } + $process->start(); + usleep(10000); + $process->stop(); + } + public function testGetPid() { $process = $this->getProcess('php -r "sleep(1);"');