{"id":73,"date":"2011-06-14T08:28:50","date_gmt":"2011-06-14T13:28:50","guid":{"rendered":"http:\/\/blog.mozilla.org\/ted\/?p=73"},"modified":"2011-06-14T08:28:50","modified_gmt":"2011-06-14T13:28:50","slug":"why-its-hard-to-ship-non-crashy-software","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/ted\/2011\/06\/14\/why-its-hard-to-ship-non-crashy-software\/","title":{"rendered":"Why it&#8217;s hard to ship non-crashy software"},"content":{"rendered":"<p>I was just looking at <a title=\"Warning: 2MB file\" href=\"https:\/\/crash-analysis.mozilla.com\/crash_analysis\/modulelist\/20110613-modulelist.txt\">some data<\/a> produced from our <a title=\"crash-stats.mozilla.com, running the Socorro webapp\" href=\"https:\/\/crash-stats.mozilla.com\/products\/Firefox\">crash reporting system<\/a>, and I continue to be amazed at the amount of third-party code that gets loaded into Firefox on Windows. That data file contains a list of all unique binary files (EXE or DLL) that were listed in Windows crash reports in a single day. A quick look at it shows:<\/p>\n<p>$ cut -f1 -d, 20110613-modulelist.txt\u00a0 | sort -u | wc -l<br \/>\n10385<\/p>\n<p>There are over 10,000 unique filenames in a single day&#8217;s worth of crash reports. That sure seems like a lot! Now, certainly, a lot of these modules look like they&#8217;ve been randomly named, which probably indicates that they&#8217;re some kind of virus (like <em>0eYZf0QFDSGEAbTRWD3F.dll<\/em>, for example), so those are likely to inflate the number. There&#8217;s <a title=\"Bug 634726 - add md5 hash of .dll's when gathering crash report, and expose those in crash reports on socorro\" href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=634726\">a bug on file<\/a> asking that we collect MD5 hashes of every DLL in our crash reports so we could more easily detect malware\/virus DLLs that use these tactics, as well as integrate with lists of known malware and viruses from antivirus vendors.<\/p>\n<p>In the past, we have had problems with <a title=\"Adobe Flash Player\" href=\"http:\/\/www.adobe.com\/products\/flashplayer\/\">plugins<\/a> and <a title=\"Skype Click and Call\" href=\"http:\/\/www.skype.com\/intl\/en\/get-skype\/on-your-computer\/click-and-call\/\">extensions<\/a> causing crashes for many Firefox users. We have ways of mitigating those through <a href=\"http:\/\/www.mozilla.com\/en-US\/blocklist\/\">blacklisting<\/a>. We can also <a href=\"https:\/\/wiki.mozilla.org\/Firefox\/3.6\/DLL_Blocking\">blacklist specific DLLs<\/a> from loading in the Firefox process, which is not used as often because it&#8217;s harder to get right and provides little feedback to users about what&#8217;s been disabled. However, given the sheer number of possible things that can be loaded in our process, it&#8217;s unlikely that we&#8217;ll ever be able to block all software that causes crashes for users. This is unfortunate, because any one of these pieces of software can cause a crash in Firefox, and all the user sees is &#8220;<a title=\"We're Sorry...\" href=\"http:\/\/support.mozilla.com\/media\/uploads\/gallery\/images\/send_crash.png\">Firefox crashed<\/a>&#8220;. I suppose we now know how Microsoft feels when users blame Windows for crashes caused by faulty drivers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was just looking at some data produced from our crash reporting system, and I continue to be amazed at the amount of third-party code that gets loaded into Firefox on Windows. That data file contains a list of all unique binary files (EXE or DLL) that were listed in Windows crash reports in a [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[2020,4562],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/posts\/73"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/comments?post=73"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/posts\/73\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/media?parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/categories?post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/ted\/wp-json\/wp\/v2\/tags?post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}