{"action":"created","issue":{"url":"https://api.github.com/repos/spark/firmware/issues/1040","repository_url":"https://api.github.com/repos/spark/firmware","labels_url":"https://api.github.com/repos/spark/firmware/issues/1040/labels{/name}","comments_url":"https://api.github.com/repos/spark/firmware/issues/1040/comments","events_url":"https://api.github.com/repos/spark/firmware/issues/1040/events","html_url":"https://github.com/spark/firmware/issues/1040","id":161292680,"number":1040,"title":"Check that all network calls are done on the system thread","user":{"login":"monkbroc","id":1919681,"avatar_url":"https://avatars.githubusercontent.com/u/1919681?v=3","gravatar_id":"","url":"https://api.github.com/users/monkbroc","html_url":"https://github.com/monkbroc","followers_url":"https://api.github.com/users/monkbroc/followers","following_url":"https://api.github.com/users/monkbroc/following{/other_user}","gists_url":"https://api.github.com/users/monkbroc/gists{/gist_id}","starred_url":"https://api.github.com/users/monkbroc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/monkbroc/subscriptions","organizations_url":"https://api.github.com/users/monkbroc/orgs","repos_url":"https://api.github.com/users/monkbroc/repos","events_url":"https://api.github.com/users/monkbroc/events{/privacy}","received_events_url":"https://api.github.com/users/monkbroc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"avtolstoy","id":388478,"avatar_url":"https://avatars.githubusercontent.com/u/388478?v=3","gravatar_id":"","url":"https://api.github.com/users/avtolstoy","html_url":"https://github.com/avtolstoy","followers_url":"https://api.github.com/users/avtolstoy/followers","following_url":"https://api.github.com/users/avtolstoy/following{/other_user}","gists_url":"https://api.github.com/users/avtolstoy/gists{/gist_id}","starred_url":"https://api.github.com/users/avtolstoy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avtolstoy/subscriptions","organizations_url":"https://api.github.com/users/avtolstoy/orgs","repos_url":"https://api.github.com/users/avtolstoy/repos","events_url":"https://api.github.com/users/avtolstoy/events{/privacy}","received_events_url":"https://api.github.com/users/avtolstoy/received_events","type":"User","site_admin":false},"assignees":[{"login":"avtolstoy","id":388478,"avatar_url":"https://avatars.githubusercontent.com/u/388478?v=3","gravatar_id":"","url":"https://api.github.com/users/avtolstoy","html_url":"https://github.com/avtolstoy","followers_url":"https://api.github.com/users/avtolstoy/followers","following_url":"https://api.github.com/users/avtolstoy/following{/other_user}","gists_url":"https://api.github.com/users/avtolstoy/gists{/gist_id}","starred_url":"https://api.github.com/users/avtolstoy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avtolstoy/subscriptions","organizations_url":"https://api.github.com/users/avtolstoy/orgs","repos_url":"https://api.github.com/users/avtolstoy/repos","events_url":"https://api.github.com/users/avtolstoy/events{/privacy}","received_events_url":"https://api.github.com/users/avtolstoy/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/spark/firmware/milestones/21","html_url":"https://github.com/spark/firmware/milestones/0.7.x","labels_url":"https://api.github.com/repos/spark/firmware/milestones/21/labels","id":1719802,"number":21,"title":"0.7.x","description":"Tentative:  address long standing issues in the backlog","creator":{"login":"m-mcgowan","id":2465470,"avatar_url":"https://avatars.githubusercontent.com/u/2465470?v=3","gravatar_id":"","url":"https://api.github.com/users/m-mcgowan","html_url":"https://github.com/m-mcgowan","followers_url":"https://api.github.com/users/m-mcgowan/followers","following_url":"https://api.github.com/users/m-mcgowan/following{/other_user}","gists_url":"https://api.github.com/users/m-mcgowan/gists{/gist_id}","starred_url":"https://api.github.com/users/m-mcgowan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m-mcgowan/subscriptions","organizations_url":"https://api.github.com/users/m-mcgowan/orgs","repos_url":"https://api.github.com/users/m-mcgowan/repos","events_url":"https://api.github.com/users/m-mcgowan/events{/privacy}","received_events_url":"https://api.github.com/users/m-mcgowan/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":1,"state":"open","created_at":"2016-04-20T05:33:15Z","updated_at":"2016-09-13T17:05:55Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2016-06-20T20:56:54Z","updated_at":"2016-09-13T17:57:09Z","closed_at":null,"body":"https://github.com/spark/firmware/issues/904 was due to a network function being called on the application thread. Let's audit the system firmware to check that all functions that perform network operations or modify system thread state are called on the system thread.\r\n\r\n`System.keepAlive` seems suspect since it uses the `ProtocolFacade`.\r\n\r\n---\r\n\r\nCompleteness:\r\n- [ ] Photon network calls reviewed\r\n- [ ] Electron network calls reviewed"},"comment":{"url":"https://api.github.com/repos/spark/firmware/issues/comments/246767368","html_url":"https://github.com/spark/firmware/issues/1040#issuecomment-246767368","issue_url":"https://api.github.com/repos/spark/firmware/issues/1040","id":246767368,"user":{"login":"m-mcgowan","id":2465470,"avatar_url":"https://avatars.githubusercontent.com/u/2465470?v=3","gravatar_id":"","url":"https://api.github.com/users/m-mcgowan","html_url":"https://github.com/m-mcgowan","followers_url":"https://api.github.com/users/m-mcgowan/followers","following_url":"https://api.github.com/users/m-mcgowan/following{/other_user}","gists_url":"https://api.github.com/users/m-mcgowan/gists{/gist_id}","starred_url":"https://api.github.com/users/m-mcgowan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m-mcgowan/subscriptions","organizations_url":"https://api.github.com/users/m-mcgowan/orgs","repos_url":"https://api.github.com/users/m-mcgowan/repos","events_url":"https://api.github.com/users/m-mcgowan/events{/privacy}","received_events_url":"https://api.github.com/users/m-mcgowan/received_events","type":"User","site_admin":false},"created_at":"2016-09-13T17:57:09Z","updated_at":"2016-09-13T17:57:09Z","body":"Some possible approaches:\r\n- get a static analysis of the call stack from the system loop\r\n- get a static analysis of the call stack from all application API entrypoints (use the API testsuite, compiled against gcc.) Can validate all APIs are covered by using code coverage against the `wiring` module.\r\n- if a method on the application thread also exists in the callchain of the system thread then we have a potential issue of calling thread-unsafe code from multiple threads. "}}
{"actor":{"display_login":"m-mcgowan"}}