{"action":"created","issue":{"url":"https://api.github.com/repos/dask/dask/issues/1105","repository_url":"https://api.github.com/repos/dask/dask","labels_url":"https://api.github.com/repos/dask/dask/issues/1105/labels{/name}","comments_url":"https://api.github.com/repos/dask/dask/issues/1105/comments","events_url":"https://api.github.com/repos/dask/dask/issues/1105/events","html_url":"https://github.com/dask/dask/pull/1105","id":149854612,"number":1105,"title":"Fix bug in ResourceProfiler resource cleanup","user":{"login":"jcrist","id":2783717,"avatar_url":"https://avatars.githubusercontent.com/u/2783717?v=3","gravatar_id":"","url":"https://api.github.com/users/jcrist","html_url":"https://github.com/jcrist","followers_url":"https://api.github.com/users/jcrist/followers","following_url":"https://api.github.com/users/jcrist/following{/other_user}","gists_url":"https://api.github.com/users/jcrist/gists{/gist_id}","starred_url":"https://api.github.com/users/jcrist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcrist/subscriptions","organizations_url":"https://api.github.com/users/jcrist/orgs","repos_url":"https://api.github.com/users/jcrist/repos","events_url":"https://api.github.com/users/jcrist/events{/privacy}","received_events_url":"https://api.github.com/users/jcrist/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-04-20T18:51:52Z","updated_at":"2016-04-20T20:35:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dask/dask/pulls/1105","html_url":"https://github.com/dask/dask/pull/1105","diff_url":"https://github.com/dask/dask/pull/1105.diff","patch_url":"https://github.com/dask/dask/pull/1105.patch"},"body":"Previously a `__del__` method was on the `_Tracker` class, which would\r\njoin the tracker upon cleanup. This worked fine if the parent process gc\r\nhit it first, but failed if the child process gc did (as child processes\r\ncan't join themselves). After this happens, if a new resource profiler\r\nwas created, then it would try to grab information from all of its\r\nsibling processes, including the one that failed to cleanup properly.\r\nProcess information can't be gathered from a zombie process, so this\r\nwould error, leading to another zombie process, and so on...\r\n\r\nThe fix is to move the `__del__` cleanup to the `ResourceProfiler`\r\nclass, and also filter out zombie processes in the `_Tracker` class.\r\n\r\nFixes #1094."},"comment":{"url":"https://api.github.com/repos/dask/dask/issues/comments/212594617","html_url":"https://github.com/dask/dask/pull/1105#issuecomment-212594617","issue_url":"https://api.github.com/repos/dask/dask/issues/1105","id":212594617,"user":{"login":"jcrist","id":2783717,"avatar_url":"https://avatars.githubusercontent.com/u/2783717?v=3","gravatar_id":"","url":"https://api.github.com/users/jcrist","html_url":"https://github.com/jcrist","followers_url":"https://api.github.com/users/jcrist/followers","following_url":"https://api.github.com/users/jcrist/following{/other_user}","gists_url":"https://api.github.com/users/jcrist/gists{/gist_id}","starred_url":"https://api.github.com/users/jcrist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcrist/subscriptions","organizations_url":"https://api.github.com/users/jcrist/orgs","repos_url":"https://api.github.com/users/jcrist/repos","events_url":"https://api.github.com/users/jcrist/events{/privacy}","received_events_url":"https://api.github.com/users/jcrist/received_events","type":"User","site_admin":false},"created_at":"2016-04-20T20:35:14Z","updated_at":"2016-04-20T20:35:14Z","body":"Not that I could figure out with a few minutes thought. Could probably work something up though if desired."}}