{"action":"created","issue":{"url":"https://api.github.com/repos/ibmruntimes/node/issues/109","repository_url":"https://api.github.com/repos/ibmruntimes/node","labels_url":"https://api.github.com/repos/ibmruntimes/node/issues/109/labels{/name}","comments_url":"https://api.github.com/repos/ibmruntimes/node/issues/109/comments","events_url":"https://api.github.com/repos/ibmruntimes/node/issues/109/events","html_url":"https://github.com/ibmruntimes/node/pull/109","id":365318963,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE5MjY3MDY1","number":109,"title":"Explicitly mark message queue events on os390","user":{"login":"ifakhrutdinov","id":34161978,"node_id":"MDQ6VXNlcjM0MTYxOTc4","avatar_url":"https://avatars2.githubusercontent.com/u/34161978?v=4","gravatar_id":"","url":"https://api.github.com/users/ifakhrutdinov","html_url":"https://github.com/ifakhrutdinov","followers_url":"https://api.github.com/users/ifakhrutdinov/followers","following_url":"https://api.github.com/users/ifakhrutdinov/following{/other_user}","gists_url":"https://api.github.com/users/ifakhrutdinov/gists{/gist_id}","starred_url":"https://api.github.com/users/ifakhrutdinov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ifakhrutdinov/subscriptions","organizations_url":"https://api.github.com/users/ifakhrutdinov/orgs","repos_url":"https://api.github.com/users/ifakhrutdinov/repos","events_url":"https://api.github.com/users/ifakhrutdinov/events{/privacy}","received_events_url":"https://api.github.com/users/ifakhrutdinov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-10-01T06:01:31Z","updated_at":"2018-10-01T13:13:29Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/ibmruntimes/node/pulls/109","html_url":"https://github.com/ibmruntimes/node/pull/109","diff_url":"https://github.com/ibmruntimes/node/pull/109.diff","patch_url":"https://github.com/ibmruntimes/node/pull/109.patch"},"body":"The os390 epoll_wait implementation uses poll() to detect events in\r\nboth file descriptors and the message queue used for file system\r\nevents. The only message queue ID is always placed at the end of the\r\narray passed to the poll() call. When the poll() call returns all FDs\r\nand the message queue are checked for events by iterating through that\r\narray. In order to distinguish the message queue from the FDs its ID\r\nvalue is compared with the only message queue ID we have and if it\r\nmatches the message queue handler function is called.\r\n\r\nWhen the message queue ID is relatively small, it may have the same\r\nvalue as the value of one of the file descriptors. If this happens,\r\nthe message queue handler is called for the matching file descriptor,\r\nand this call fails. The file descriptor ends up being unhandled and\r\nthis makes the next poll() call to return immediately. Eventually this\r\nwill happen again and again, leading to an infinite busy loop and high\r\nCPU usage.\r\n\r\nTo prevent the incorrect interpretation of file descriptors as the\r\nmessage queue, a new field has been added to the epoll event struct.\r\nThis field is checked instead of the ID value and the message queue\r\nhandler function is never called for file descriptors.\r\n\r\nThis PR should resolve issue https://github.com/ibmruntimes/node/issues/104"},"comment":{"url":"https://api.github.com/repos/ibmruntimes/node/issues/comments/425902566","html_url":"https://github.com/ibmruntimes/node/pull/109#issuecomment-425902566","issue_url":"https://api.github.com/repos/ibmruntimes/node/issues/109","id":425902566,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNTkwMjU2Ng==","user":{"login":"bnoordhuis","id":275871,"node_id":"MDQ6VXNlcjI3NTg3MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/275871?v=4","gravatar_id":"","url":"https://api.github.com/users/bnoordhuis","html_url":"https://github.com/bnoordhuis","followers_url":"https://api.github.com/users/bnoordhuis/followers","following_url":"https://api.github.com/users/bnoordhuis/following{/other_user}","gists_url":"https://api.github.com/users/bnoordhuis/gists{/gist_id}","starred_url":"https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bnoordhuis/subscriptions","organizations_url":"https://api.github.com/users/bnoordhuis/orgs","repos_url":"https://api.github.com/users/bnoordhuis/repos","events_url":"https://api.github.com/users/bnoordhuis/events{/privacy}","received_events_url":"https://api.github.com/users/bnoordhuis/received_events","type":"User","site_admin":false},"created_at":"2018-10-01T13:13:29Z","updated_at":"2018-10-01T13:13:29Z","author_association":"NONE","body":"If this is the right fix, you should (also?) send it to https://github.com/libuv/libuv. At-mention me and @jBarz and we'll take a look, we're both libuv maintainers."}}
{"actor":{"display_login":"bnoordhuis"}}