{"action":"created","issue":{"url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/100","labels_url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/100/labels{/name}","comments_url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/100/comments","events_url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/100/events","html_url":"https://github.com/bitwiseworks/mozilla-os2/issues/100","id":66995476,"number":100,"title":"Update Firefox to ESR31","user":{"login":"dmik","id":900726,"avatar_url":"https://avatars.githubusercontent.com/u/900726?v=3","gravatar_id":"","url":"https://api.github.com/users/dmik","html_url":"https://github.com/dmik","followers_url":"https://api.github.com/users/dmik/followers","following_url":"https://api.github.com/users/dmik/following{/other_user}","gists_url":"https://api.github.com/users/dmik/gists{/gist_id}","starred_url":"https://api.github.com/users/dmik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmik/subscriptions","organizations_url":"https://api.github.com/users/dmik/orgs","repos_url":"https://api.github.com/users/dmik/repos","events_url":"https://api.github.com/users/dmik/events{/privacy}","received_events_url":"https://api.github.com/users/dmik/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/labels/critical","name":"critical","color":"e11d21"},{"url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/labels/task","name":"task","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/milestones/12","html_url":"https://github.com/bitwiseworks/mozilla-os2/milestones/Firefox%20Beta%205","labels_url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/milestones/12/labels","id":984325,"number":12,"title":"Firefox Beta 5","description":"5th beta of Firefox for eCS (OS/2)\r\nThis beta is Firefox 31 based","creator":{"login":"SilvanScherrer","id":1235738,"avatar_url":"https://avatars.githubusercontent.com/u/1235738?v=3","gravatar_id":"","url":"https://api.github.com/users/SilvanScherrer","html_url":"https://github.com/SilvanScherrer","followers_url":"https://api.github.com/users/SilvanScherrer/followers","following_url":"https://api.github.com/users/SilvanScherrer/following{/other_user}","gists_url":"https://api.github.com/users/SilvanScherrer/gists{/gist_id}","starred_url":"https://api.github.com/users/SilvanScherrer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SilvanScherrer/subscriptions","organizations_url":"https://api.github.com/users/SilvanScherrer/orgs","repos_url":"https://api.github.com/users/SilvanScherrer/repos","events_url":"https://api.github.com/users/SilvanScherrer/events{/privacy}","received_events_url":"https://api.github.com/users/SilvanScherrer/received_events","type":"User","site_admin":false},"open_issues":17,"closed_issues":2,"state":"open","created_at":"2015-02-18T11:10:26Z","updated_at":"2015-06-10T13:10:34Z","due_on":"2015-07-30T22:00:00Z","closed_at":null},"comments":60,"created_at":"2015-04-07T21:32:49Z","updated_at":"2015-06-16T19:36:34Z","closed_at":null,"body":"We need to update our Firefox codebase to ESR31. This will include restoring OS/2 parts removed between ESR24 and ESR31 back in business."},"comment":{"url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/comments/112540890","html_url":"https://github.com/bitwiseworks/mozilla-os2/issues/100#issuecomment-112540890","issue_url":"https://api.github.com/repos/bitwiseworks/mozilla-os2/issues/100","id":112540890,"user":{"login":"dmik","id":900726,"avatar_url":"https://avatars.githubusercontent.com/u/900726?v=3","gravatar_id":"","url":"https://api.github.com/users/dmik","html_url":"https://github.com/dmik","followers_url":"https://api.github.com/users/dmik/followers","following_url":"https://api.github.com/users/dmik/following{/other_user}","gists_url":"https://api.github.com/users/dmik/gists{/gist_id}","starred_url":"https://api.github.com/users/dmik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmik/subscriptions","organizations_url":"https://api.github.com/users/dmik/orgs","repos_url":"https://api.github.com/users/dmik/repos","events_url":"https://api.github.com/users/dmik/events{/privacy}","received_events_url":"https://api.github.com/users/dmik/received_events","type":"User","site_admin":false},"created_at":"2015-06-16T19:36:34Z","updated_at":"2015-06-16T19:36:34Z","body":"I found what was wrong. The new Ion (JIT) engine implements the so-called interrupt technique to kick into the JIT code being executed when it needs to execute some hook. On Win this is done through setting JIT code's memory to \"no access\" mode which causes the access violation exception next time this code is executed. The exception handler catches this, restores memory access rights to \"all access\", executes necessary hooks, and lets the JIT code continue from the place it was interrupted at.\r\n\r\nAs on OS/2 it's impossible to set \"no access\" mode for memory pages other than decommit them, this is what I did when I discovered this new code when merging esr31 into trunk — w/o knowing back then on how that code was supposed to be used. Apparently, this didn't work as designed because decimating pages releases storage and when they are committed again they are filled with zeroes (thus, effectively killing all JIT code that was there before). Now that I realized this, I had to use a different technique on OS/2 that involves the PAG_GUARD page flag and the XCPT_GUARD_PAGE_VIOLATION exception (instead of XCPT_ACCESS_VIOLATION).\r\n\r\nI gave it quite a long run (including gmail access) and no JS crashes any more. I conclude that this particular problem is solved. The fix is in 7137167cfd18e66abb31e36e5fb6e0350d49bce8. Moving to other problems now (mentioned above).\r\n"}}