{"action":"created","issue":{"url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/185","labels_url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/185/labels{/name}","comments_url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/185/comments","events_url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/185/events","html_url":"https://github.com/haskell-distributed/distributed-process/pull/185","id":59512430,"number":185,"title":"Workaround for throwTo problem that can potentially block.","user":{"login":"qnikst","id":170227,"avatar_url":"https://avatars.githubusercontent.com/u/170227?v=3","gravatar_id":"","url":"https://api.github.com/users/qnikst","html_url":"https://github.com/qnikst","followers_url":"https://api.github.com/users/qnikst/followers","following_url":"https://api.github.com/users/qnikst/following{/other_user}","gists_url":"https://api.github.com/users/qnikst/gists{/gist_id}","starred_url":"https://api.github.com/users/qnikst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qnikst/subscriptions","organizations_url":"https://api.github.com/users/qnikst/orgs","repos_url":"https://api.github.com/users/qnikst/repos","events_url":"https://api.github.com/users/qnikst/events{/privacy}","received_events_url":"https://api.github.com/users/qnikst/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":17,"created_at":"2015-03-02T17:21:47Z","updated_at":"2015-03-17T22:25:46Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/haskell-distributed/distributed-process/pulls/185","html_url":"https://github.com/haskell-distributed/distributed-process/pull/185","diff_url":"https://github.com/haskell-distributed/distributed-process/pull/185.diff","patch_url":"https://github.com/haskell-distributed/distributed-process/pull/185.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/comments/82623358","html_url":"https://github.com/haskell-distributed/distributed-process/pull/185#issuecomment-82623358","issue_url":"https://api.github.com/repos/haskell-distributed/distributed-process/issues/185","id":82623358,"user":{"login":"mboes","id":51356,"avatar_url":"https://avatars.githubusercontent.com/u/51356?v=3","gravatar_id":"","url":"https://api.github.com/users/mboes","html_url":"https://github.com/mboes","followers_url":"https://api.github.com/users/mboes/followers","following_url":"https://api.github.com/users/mboes/following{/other_user}","gists_url":"https://api.github.com/users/mboes/gists{/gist_id}","starred_url":"https://api.github.com/users/mboes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mboes/subscriptions","organizations_url":"https://api.github.com/users/mboes/orgs","repos_url":"https://api.github.com/users/mboes/repos","events_url":"https://api.github.com/users/mboes/events{/privacy}","received_events_url":"https://api.github.com/users/mboes/received_events","type":"User","site_admin":false},"created_at":"2015-03-17T22:25:46Z","updated_at":"2015-03-17T22:25:46Z","body":"@hyperthunk for some context, the issue is that in GHC exceptions delivered\nvia `throwTo' are asynchronous exceptions, but they are *delivered*\nsynchronously. That is, the thread calling `throwTo` (i.e. the NC) blocks\nuntil the target thread has had the async exception delivered to it. Hence\nwhy users should not prevent delivery of async exeptions for any extended\nperiod of time, e.g. using `uninterruptibleMask`. This PR posits that d-p\nouught to be better behaved in the face of user foolishness. I for one am\nundecided about whether this is the right thing to do, but it's worth\nnoting that as @facundominguez points out, it's surprisingly easy to be\nfoolish: just write some code that runs in a tight loop for a long time\nwithout allocating.\n\n`exit` itself is completely async either way, yes.\n"}}