{"action":"created","issue":{"url":"https://api.github.com/repos/golang/go/issues/21314","repository_url":"https://api.github.com/repos/golang/go","labels_url":"https://api.github.com/repos/golang/go/issues/21314/labels{/name}","comments_url":"https://api.github.com/repos/golang/go/issues/21314/comments","events_url":"https://api.github.com/repos/golang/go/issues/21314/events","html_url":"https://github.com/golang/go/issues/21314","id":248073371,"number":21314,"title":"cmd/compile, runtime: add and use go:nosplitrec compilation directive","user":{"login":"ianlancetaylor","id":3194333,"avatar_url":"https://avatars2.githubusercontent.com/u/3194333?v=4","gravatar_id":"","url":"https://api.github.com/users/ianlancetaylor","html_url":"https://github.com/ianlancetaylor","followers_url":"https://api.github.com/users/ianlancetaylor/followers","following_url":"https://api.github.com/users/ianlancetaylor/following{/other_user}","gists_url":"https://api.github.com/users/ianlancetaylor/gists{/gist_id}","starred_url":"https://api.github.com/users/ianlancetaylor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ianlancetaylor/subscriptions","organizations_url":"https://api.github.com/users/ianlancetaylor/orgs","repos_url":"https://api.github.com/users/ianlancetaylor/repos","events_url":"https://api.github.com/users/ianlancetaylor/events{/privacy}","received_events_url":"https://api.github.com/users/ianlancetaylor/received_events","type":"User","site_admin":false},"labels":[{"id":373399998,"url":"https://api.github.com/repos/golang/go/labels/NeedsFix","name":"NeedsFix","color":"ededed","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/golang/go/milestones/62","html_url":"https://github.com/golang/go/milestone/62","labels_url":"https://api.github.com/repos/golang/go/milestones/62/labels","id":2827591,"number":62,"title":"Go1.11","description":"","creator":{"login":"rsc","id":104030,"avatar_url":"https://avatars1.githubusercontent.com/u/104030?v=4","gravatar_id":"","url":"https://api.github.com/users/rsc","html_url":"https://github.com/rsc","followers_url":"https://api.github.com/users/rsc/followers","following_url":"https://api.github.com/users/rsc/following{/other_user}","gists_url":"https://api.github.com/users/rsc/gists{/gist_id}","starred_url":"https://api.github.com/users/rsc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rsc/subscriptions","organizations_url":"https://api.github.com/users/rsc/orgs","repos_url":"https://api.github.com/users/rsc/repos","events_url":"https://api.github.com/users/rsc/events{/privacy}","received_events_url":"https://api.github.com/users/rsc/received_events","type":"User","site_admin":false},"open_issues":896,"closed_issues":396,"state":"open","created_at":"2017-10-10T13:39:17Z","updated_at":"2018-05-04T09:39:51Z","due_on":"2018-07-31T07:00:00Z","closed_at":null},"comments":27,"created_at":"2017-08-04T17:48:42Z","updated_at":"2018-05-04T11:30:23Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"A key error leading to #21306 was a call from a nosplit function to a function not marked nosplit, permitting preemption at a point where it was not permitted.\r\n\r\nTherefore, just as we have `go:nowritebarrierrec` meaning that such a function may not call any function that permits write barriers, we should have `go:nosplitrec` meaning that such a function may not call any function that permits preemption.\r\n\r\nSince `nosplit` is now a misnomer--the stack no longer splits--we could also consider a name like `go:nopreemptrec`."},"comment":{"url":"https://api.github.com/repos/golang/go/issues/comments/386573545","html_url":"https://github.com/golang/go/issues/21314#issuecomment-386573545","issue_url":"https://api.github.com/repos/golang/go/issues/21314","id":386573545,"user":{"login":"eliasnaur","id":524812,"avatar_url":"https://avatars1.githubusercontent.com/u/524812?v=4","gravatar_id":"","url":"https://api.github.com/users/eliasnaur","html_url":"https://github.com/eliasnaur","followers_url":"https://api.github.com/users/eliasnaur/followers","following_url":"https://api.github.com/users/eliasnaur/following{/other_user}","gists_url":"https://api.github.com/users/eliasnaur/gists{/gist_id}","starred_url":"https://api.github.com/users/eliasnaur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eliasnaur/subscriptions","organizations_url":"https://api.github.com/users/eliasnaur/orgs","repos_url":"https://api.github.com/users/eliasnaur/repos","events_url":"https://api.github.com/users/eliasnaur/events{/privacy}","received_events_url":"https://api.github.com/users/eliasnaur/received_events","type":"User","site_admin":false},"created_at":"2018-05-04T11:30:23Z","updated_at":"2018-05-04T11:30:23Z","author_association":"CONTRIBUTOR","body":"Two cases where I believe a go:nosplitrec or go:noscan would have helped:\r\n\r\nCL 21314 would have missed a go:nosplit for the runtime.crash function if Austin had not caught my mistake in review.\r\n\r\nThe breaking of the nosplit chain CL 111258 is fixing. A go:noscan would presumably have caught the subtle issue that the closure in systemstack(func() { ... }) is not marked nosplit."}}
{"actor":{"display_login":"eliasnaur"}}