{"id":431,"date":"2015-03-31T16:33:32","date_gmt":"2015-03-31T20:33:32","guid":{"rendered":"http:\/\/blog.mozilla.org\/nfroyd\/?p=431"},"modified":"2015-03-31T16:33:32","modified_gmt":"2015-03-31T20:33:32","slug":"tsan-bug-finding-update","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/nfroyd\/2015\/03\/31\/tsan-bug-finding-update\/","title":{"rendered":"tsan bug finding update"},"content":{"rendered":"<p>At the beginning of Q1, I set a goal to investigate races with <a href=\"https:\/\/code.google.com\/p\/thread-sanitizer\/\">Thread Sanitizer<\/a> and to fix the &#8220;top&#8221; 10 races discovered with the tool.\u00a0 Ten races seemed like a conservative number; we didn&#8217;t know how many races there were, their impact, or how difficult fixing them would be.\u00a0 We also weren&#8217;t sure how much participation we could count on from area experts, and it might have turned out that I would spend a significant amount of time figuring out what was going on with the races and fixing them myself.<\/p>\n<p>I&#8217;m happy to report that according to Bugzilla, nearly <a href=\"https:\/\/bugzilla.mozilla.org\/buglist.cgi?f1=blocked&amp;list_id=12139752&amp;o1=equals&amp;resolution=FIXED&amp;resolution=WONTFIX&amp;resolution=DUPLICATE&amp;resolution=WORKSFORME&amp;resolution=INCOMPLETE&amp;chfieldto=Now&amp;chfield=bug_status&amp;query_format=advanced&amp;chfieldfrom=2015-01-01&amp;chfieldvalue=RESOLVED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;v1=929478\">30 of the races reported this quarter have been fixed<\/a>.\u00a0 Folks in the networking stack, JavaScript GC, JavaScript JIT, and ImageLib have been super-responsive in addressing problems.\u00a0 There are even a few bugs in the afore-linked query that have been fixed by folks on the WebRTC team running TSan or similar thread-safety tools (<a href=\"http:\/\/clang.llvm.org\/docs\/ThreadSafetyAnalysis.html\">Clang&#8217;s Thread Safety Analysis<\/a>, to be specific) to detect bugs themselves, which is heartening to see.\u00a0 And it&#8217;s also worth mentioning that at least <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1133064\">one of the unfixed DOM media bugs<\/a> detected by TSan has seen some significant threadsafety refactoring work in its dependent bugs.\u00a0 All this attention to data races has been very encouraging.<\/p>\n<p>I plan on continuing the TSan runs in Q2 along with getting TSan-on-Firefox working with more-or-less current versions of Clang.\u00a0 Having to download specific Subversion revisions of the tools or precompiled Clang 3.3 (!) binaries to make TSan work is discouraging, and that could obviously work much better.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the beginning of Q1, I set a goal to investigate races with Thread Sanitizer and to fix the &#8220;top&#8221; 10 races discovered with the tool.\u00a0 Ten races seemed like a conservative number; we didn&#8217;t know how many races there were, their impact, or how difficult fixing them would be.\u00a0 We also weren&#8217;t sure how [&hellip;]<\/p>\n","protected":false},"author":320,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[72431,5,72430],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/431"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/users\/320"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/comments?post=431"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/431\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/media?parent=431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/categories?post=431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/tags?post=431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}