{"action":"created","issue":{"url":"https://api.github.com/repos/ponylang/ponyc/issues/1319","repository_url":"https://api.github.com/repos/ponylang/ponyc","labels_url":"https://api.github.com/repos/ponylang/ponyc/issues/1319/labels{/name}","comments_url":"https://api.github.com/repos/ponylang/ponyc/issues/1319/comments","events_url":"https://api.github.com/repos/ponylang/ponyc/issues/1319/events","html_url":"https://github.com/ponylang/ponyc/issues/1319","id":182884905,"number":1319,"title":"The ABA-protected CAS loops","user":{"login":"Praetonus","id":5193706,"avatar_url":"https://avatars.githubusercontent.com/u/5193706?v=3","gravatar_id":"","url":"https://api.github.com/users/Praetonus","html_url":"https://github.com/Praetonus","followers_url":"https://api.github.com/users/Praetonus/followers","following_url":"https://api.github.com/users/Praetonus/following{/other_user}","gists_url":"https://api.github.com/users/Praetonus/gists{/gist_id}","starred_url":"https://api.github.com/users/Praetonus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Praetonus/subscriptions","organizations_url":"https://api.github.com/users/Praetonus/orgs","repos_url":"https://api.github.com/users/Praetonus/repos","events_url":"https://api.github.com/users/Praetonus/events{/privacy}","received_events_url":"https://api.github.com/users/Praetonus/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ponylang/ponyc/labels/difficulty:%203-%20hard","name":"difficulty: 3- hard","color":"000000"},{"url":"https://api.github.com/repos/ponylang/ponyc/labels/needs%20discussion%20during%20sync","name":"needs discussion during sync","color":"0052cc"},{"url":"https://api.github.com/repos/ponylang/ponyc/labels/priority:%203%20-%20high","name":"priority: 3 - high","color":"006b75"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-10-13T19:56:12Z","updated_at":"2016-10-13T23:13:20Z","closed_at":null,"body":"It turns out the change in 83bc2aa, which reduces the number of bits used for ABA protection is bugged as there are now too few bits. This is causing runtime crashes as reported by @malthe on IRC.\r\n\r\nThis is a tough problem. Going back to the double-word CAS wouldn't be good as it would impact performance, and there are portability issues. A possible solution could be to use a starvation-free algorithm instead of a lock-free one, removing the ABA problem completely. I've put together an [example implementation](https://gist.github.com/Praetonus/924929e63bf8daba1159e3d99530114f)."},"comment":{"url":"https://api.github.com/repos/ponylang/ponyc/issues/comments/253665614","html_url":"https://github.com/ponylang/ponyc/issues/1319#issuecomment-253665614","issue_url":"https://api.github.com/repos/ponylang/ponyc/issues/1319","id":253665614,"user":{"login":"Praetonus","id":5193706,"avatar_url":"https://avatars.githubusercontent.com/u/5193706?v=3","gravatar_id":"","url":"https://api.github.com/users/Praetonus","html_url":"https://github.com/Praetonus","followers_url":"https://api.github.com/users/Praetonus/followers","following_url":"https://api.github.com/users/Praetonus/following{/other_user}","gists_url":"https://api.github.com/users/Praetonus/gists{/gist_id}","starred_url":"https://api.github.com/users/Praetonus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Praetonus/subscriptions","organizations_url":"https://api.github.com/users/Praetonus/orgs","repos_url":"https://api.github.com/users/Praetonus/repos","events_url":"https://api.github.com/users/Praetonus/events{/privacy}","received_events_url":"https://api.github.com/users/Praetonus/received_events","type":"User","site_admin":false},"created_at":"2016-10-13T23:13:20Z","updated_at":"2016-10-13T23:13:20Z","body":"The bug also occurs with `--ponythreads=1` so it's not the ABA. Strange things are occurring here."}}
{"actor":{"display_login":"Praetonus"}}