{"id":96,"date":"2011-03-31T19:22:54","date_gmt":"2011-03-31T23:22:54","guid":{"rendered":"http:\/\/www.joshmatthews.net\/blog\/?p=96"},"modified":"2011-03-31T23:59:37","modified_gmt":"2011-04-01T03:59:37","slug":"how-to-identify-expected-and-unexpected-crashes-in-tinderbox-logs","status":"publish","type":"post","link":"https:\/\/www.joshmatthews.net\/blog\/2011\/03\/how-to-identify-expected-and-unexpected-crashes-in-tinderbox-logs\/","title":{"rendered":"How to identify expected and unexpected crashes in tinderbox logs"},"content":{"rendered":"<p>I&#8217;ve seen this come up in several bugs recently, and it&#8217;s time to disseminate some knowledge.  Here is what an unexpected crash usually looks like:<\/p>\n<p><code>TEST-UNEXPECTED-FAIL | \/tests\/content\/media\/test\/test_seek.html | application timed out after 330 seconds with no output<br \/>\nPROCESS-CRASH | \/tests\/content\/media\/test\/test_seek.html | application crashed (minidump found)<\/code><\/p>\n<p>You&#8217;re looking at a test harness timeout because of a crash.  Simple, easy to recognize.  Even shows the crashing test for you!<\/p>\n<p><code>PROCESS-CRASH | Main app process exited normally | application crashed (minidump found)<\/code><\/p>\n<p>Here&#8217;s a sly one.  This is a crash, but the lack of a test name and the &#8220;Main app process exited normally&#8221; actually means that a subprocess crashed intentionally.  We&#8217;ve got tests that run scripts that cause crashes in child processes so that we can test the recovery behaviour in the parent, but unfortunately we display that information very well right now.<\/p>\n<p>If you&#8217;re in doubt as to what kind of crash you&#8217;re seeing in the log, there&#8217;s another heuristic you can apply by looking at the crashing stack:<\/p>\n<p><code>Crash reason:  SIGSEGV<br \/>\nCrash address: 0x8<\/p>\n<p>Thread 0 (crashed)<br \/>\n 0  libxul.so!js::ctypes::ConvertToJS [typedefs.h:a538db9ab619 : 113 + 0x5]<br \/>\n    rbx = 0x00000008   r12 = 0xa7833800   r13 = 0x00000000   r14 = 0x00000000<br \/>\n    r15 = 0x00000000   rip = 0xb69142f5   rsp = 0xf25f7490   rbp = 0xa87a4690<br \/>\n    Found by: given as instruction pointer in context<br \/>\n 1  libxul.so!js::ctypes::PointerType::ContentsGetter [CTypes.cpp:a538db9ab619 : 3393 + 0x1b]<br \/>\n    rbx = 0xa7833800   r12 = 0xa87a4690   r13 = 0xf25f74e8   r14 = 0xffffffff<br \/>\n    r15 = 0xf25f7ae0   rip = 0xb69173cf   rsp = 0xf25f74e0   rbp = 0xa877e750<br \/>\n    Found by: call frame info<\/code><\/p>\n<p>This is an intentional crash.  We use jsctypes to dereference 0x8, an invalid address, and this is what it looks like every single time.  If you don&#8217;t see this stack, you&#8217;re looking at a crash that should be filed.<\/p>\n<p>So, to summarize: not every crash is unexpected.  Keep your wits about you; know your crash stacks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve seen this come up in several bugs recently, and it&#8217;s time to disseminate some knowledge. Here is what an unexpected crash usually looks like: TEST-UNEXPECTED-FAIL | \/tests\/content\/media\/test\/test_seek.html | application timed out after 330 seconds with no output PROCESS-CRASH | &hellip; <a href=\"https:\/\/www.joshmatthews.net\/blog\/2011\/03\/how-to-identify-expected-and-unexpected-crashes-in-tinderbox-logs\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-96","post","type-post","status-publish","format-standard","hentry","category-mozilla"],"_links":{"self":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/96","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":5,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":102,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions\/102"}],"wp:attachment":[{"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joshmatthews.net\/blog\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}