-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[Process] Orphan temporary files are left on Windows #7078
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@extesy could you provide a failing test or an example code revealing the issue? Technically files should be automatically removed when |
@jakzal It's quite hard to isolate the small repro case, but here's what I think is going on:
|
Actually, if (null === $this->stdin) {
fclose($this->pipes[0]);
unset($this->pipes[0]);
return;
} So |
@extesy what are the exit statuses of these worker processes? |
@romainneutron Can you have a look at this? |
Ok, I'll try to repro it with a test script. |
This PR was squashed before being merged into the 2.2 branch (closes #8924). Discussion ---------- [Process][2.2] Fix Process component on windows | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #8836, #8799, #7078 | License | MIT This PR fixes Process on windows (almost, see note below). - Some unit tests were not Windows compatible - Use a file handle for STDERR as well as STDOUT to avoid blocking - Decouple pipes and descriptors from Process As this move some a part of Process in a sub class, I hope merging this in 2.3 and master would not be a PITA. I'm here to make some adjustments after theses merge if needed. **Important note** : We are using file handles instead of streams for `proc_open` pipes as described in the code (see [PHP bug #51800](https://bugs.php.net/bug.php?id=51800)). Unfortunately, this workaround may produce corrupted output/error output in some race conditions. That's why `AbstractProcessTest::testProcessPipes` randomly fails when using file handles (on unix and windows). Commits ------- 4a76c76 [Process][2.2] Fix Process component on windows
On Windows
Process::start
creates a temporary file every time because of this code:When being invoked for thousands of times as part of task scheduling pipeline, it leaves thousands of temporary files and eventually hits the limit at 65536 files per directory, after which point it can't create a new temporary file and simply dies.
After being used, the temporary file should be deleted.
The text was updated successfully, but these errors were encountered: