{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/winforms/issues/1612","repository_url":"https://api.github.com/repos/dotnet/winforms","labels_url":"https://api.github.com/repos/dotnet/winforms/issues/1612/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/winforms/issues/1612/comments","events_url":"https://api.github.com/repos/dotnet/winforms/issues/1612/events","html_url":"https://github.com/dotnet/winforms/pull/1612","id":479958585,"node_id":"MDExOlB1bGxSZXF1ZXN0MzA2NzQ1NDEz","number":1612,"title":"Fix tooltip crash and harden","user":{"login":"JeremyKuhne","id":8184940,"node_id":"MDQ6VXNlcjgxODQ5NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"labels":[{"id":1469238513,"node_id":"MDU6TGFiZWwxNDY5MjM4NTEz","url":"https://api.github.com/repos/dotnet/winforms/labels/ask-mode","name":"ask-mode","color":"ce1e36","default":false}],"state":"closed","locked":false,"assignee":{"login":"JeremyKuhne","id":8184940,"node_id":"MDQ6VXNlcjgxODQ5NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false},"assignees":[{"login":"JeremyKuhne","id":8184940,"node_id":"MDQ6VXNlcjgxODQ5NDA=","avatar_url":"https://avatars3.githubusercontent.com/u/8184940?v=4","gravatar_id":"","url":"https://api.github.com/users/JeremyKuhne","html_url":"https://github.com/JeremyKuhne","followers_url":"https://api.github.com/users/JeremyKuhne/followers","following_url":"https://api.github.com/users/JeremyKuhne/following{/other_user}","gists_url":"https://api.github.com/users/JeremyKuhne/gists{/gist_id}","starred_url":"https://api.github.com/users/JeremyKuhne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeremyKuhne/subscriptions","organizations_url":"https://api.github.com/users/JeremyKuhne/orgs","repos_url":"https://api.github.com/users/JeremyKuhne/repos","events_url":"https://api.github.com/users/JeremyKuhne/events{/privacy}","received_events_url":"https://api.github.com/users/JeremyKuhne/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/winforms/milestones/11","html_url":"https://github.com/dotnet/winforms/milestone/11","labels_url":"https://api.github.com/repos/dotnet/winforms/milestones/11/labels","id":4399406,"node_id":"MDk6TWlsZXN0b25lNDM5OTQwNg==","number":11,"title":"3.0.0-Preview9","description":"Expected release 09/04/2019","creator":{"login":"leecow","id":2212879,"node_id":"MDQ6VXNlcjIyMTI4Nzk=","avatar_url":"https://avatars3.githubusercontent.com/u/2212879?v=4","gravatar_id":"","url":"https://api.github.com/users/leecow","html_url":"https://github.com/leecow","followers_url":"https://api.github.com/users/leecow/followers","following_url":"https://api.github.com/users/leecow/following{/other_user}","gists_url":"https://api.github.com/users/leecow/gists{/gist_id}","starred_url":"https://api.github.com/users/leecow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leecow/subscriptions","organizations_url":"https://api.github.com/users/leecow/orgs","repos_url":"https://api.github.com/users/leecow/repos","events_url":"https://api.github.com/users/leecow/events{/privacy}","received_events_url":"https://api.github.com/users/leecow/received_events","type":"User","site_admin":false},"open_issues":16,"closed_issues":37,"state":"open","created_at":"2019-06-11T21:41:27Z","updated_at":"2019-08-15T08:45:40Z","due_on":"2019-08-21T07:00:00Z","closed_at":null},"comments":1,"created_at":"2019-08-13T04:53:15Z","updated_at":"2019-08-15T08:46:02Z","closed_at":"2019-08-14T22:29:25Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/dotnet/winforms/pulls/1612","html_url":"https://github.com/dotnet/winforms/pull/1612","diff_url":"https://github.com/dotnet/winforms/pull/1612.diff","patch_url":"https://github.com/dotnet/winforms/pull/1612.patch"},"body":"The tooltip class will cause Windows to AV when attempting to get the tooltip bubble size when there isn't an actively showing tooltip. (Really Windows should be checking before derefing their internal pointer, but this has been there forever.) Fixing this by making sure to check that one is active when sending the query message.\r\n\r\nThe existing TooInfo usage was not safe and could crash with bad timing with a GC. I've hardened usage of the TTTOOLINFO struct and made it blittable, which should make things both safe and more performant as we're not instantiating a class anymore.\r\n\r\nFixes #1602.\r\n\r\n## Proposed changes\r\n\r\n- Refactor TTOOLINFO to guard against AVs\r\n- Fix the explicit AV in #1602\r\n\r\n## Customer Impact\r\n\r\n- Won't easily AV\r\n- Better performance\r\n\r\n## Regression? \r\n\r\n- Yes - Introduced in 4.8\r\n\r\n## Risk\r\n\r\n- Reasonably low- it is much easier to reason about the code with this change\r\n\r\n## Test methodology\r\n\r\n- Manual testing with Tooltip\r\n- Debugging into Windows to validate behavior\r\n\n\n###### Microsoft Reviewers: [Open in CodeFlow](http://wpcp.azurewebsites.net/CodeFlowProtocolProxy2.php?pullrequest=https://github.com/dotnet/winforms/pull/1612)"},"comment":{"url":"https://api.github.com/repos/dotnet/winforms/issues/comments/521565052","html_url":"https://github.com/dotnet/winforms/pull/1612#issuecomment-521565052","issue_url":"https://api.github.com/repos/dotnet/winforms/issues/1612","id":521565052,"node_id":"MDEyOklzc3VlQ29tbWVudDUyMTU2NTA1Mg==","user":{"login":"RussKie","id":4403806,"node_id":"MDQ6VXNlcjQ0MDM4MDY=","avatar_url":"https://avatars3.githubusercontent.com/u/4403806?v=4","gravatar_id":"","url":"https://api.github.com/users/RussKie","html_url":"https://github.com/RussKie","followers_url":"https://api.github.com/users/RussKie/followers","following_url":"https://api.github.com/users/RussKie/following{/other_user}","gists_url":"https://api.github.com/users/RussKie/gists{/gist_id}","starred_url":"https://api.github.com/users/RussKie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RussKie/subscriptions","organizations_url":"https://api.github.com/users/RussKie/orgs","repos_url":"https://api.github.com/users/RussKie/repos","events_url":"https://api.github.com/users/RussKie/events{/privacy}","received_events_url":"https://api.github.com/users/RussKie/received_events","type":"User","site_admin":false},"created_at":"2019-08-15T08:46:02Z","updated_at":"2019-08-15T08:46:02Z","author_association":"MEMBER","body":"Thank you @JeremyKuhne "}}
{"actor":{"display_login":"RussKie"}}