Summary: | Portage leaves processes running if it runs out of space | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Alec Meyers <alecm_88> |
Component: | Unclassified | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | minor | Keywords: | InVCS, REGRESSION |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 335925 | ||
Attachments: |
Full output of "ps aux"
End of build.log |
Description
Alec Meyers
2010-09-14 00:22:06 UTC
Created attachment 247207 [details]
Full output of "ps aux"
Created attachment 247208 [details]
End of build.log
We have a "balancing act" of sorts going on between bug #335777 and bug #336142. In 2.2_rc81, the timeout is currently set at 15 minutes as mentioned in bug #336142, comment #21. There are some fixes in git, mentioned in bug #336142, comment #23 that should make it safer to decrease the timeout to a smaller value. Ideally, we'd be able to eliminate the timeout entirely, but I haven't found a good way to do that yet that doesn't create the possibility of leaving processes running indefinitely. (In reply to comment #3) > Ideally, we'd be able to eliminate the timeout entirely, but I haven't found a > good way to do that yet that doesn't create the possibility of leaving > processes running indefinitely. Two possible solutions to this that come to mind are: 1) Ensure the the parent process always kills the descendent processes (ebuild-ipc being the one that's hung in this case). 2) Make the ebuild-ipc process detect when the parent process has died, so that it won't timeout as long as the parent process is still alive. (In reply to comment #4) > 2) Make the ebuild-ipc process detect when the parent process has died, so that > it won't timeout as long as the parent process is still alive. This approach is implemented in git now: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=f055cd8f241263c67cf53ed1a7b52ffa8e671fc2 It tries a non-blocking lock on a lock file that's held by the parent process, in order to check if it's still alive. The timeout is 15 seconds now which should be much more reasonable. This is fixed in 2.1.9.6 and 2.2_rc82. |