From 3e72e50bdb9a8c3c9c112fe13cd746edc6bb6210 Mon Sep 17 00:00:00 2001 From: Steve Fink Date: Tue, 8 Jan 2013 21:39:54 -0800 Subject: [PATCH] Bug 822041 - Temporary diagnostic for tracking down intermittent failures in JS profiling. r=jorendorff --HG-- extra : rebase_source : e3465205c2f862654155243f71604c6ba29498c3 --- js/src/vm/SPSProfiler.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/js/src/vm/SPSProfiler.cpp b/js/src/vm/SPSProfiler.cpp index 73efc1c6607..ffc33bc1f33 100644 --- a/js/src/vm/SPSProfiler.cpp +++ b/js/src/vm/SPSProfiler.cpp @@ -129,6 +129,19 @@ SPSProfiler::exit(JSContext *cx, UnrootedScript script, UnrootedFunction maybeFu const char *str = profileString(cx, script, maybeFun); /* Can't fail lookup because we should already be in the set */ JS_ASSERT(str != NULL); + + // Bug 822041 + if (!stack_[*size_].js()) { + fprintf(stderr, "--- ABOUT TO FAIL ASSERTION ---\n"); + fprintf(stderr, " stack=%p size=%d/%d\n", (void*) stack_, *size_, max_); + for (int32_t i = *size_; i >= 0; i--) { + if (stack_[i].js()) + fprintf(stderr, " [%d] JS %s\n", i, stack_[i].label()); + else + fprintf(stderr, " [%d] C line %d %s\n", i, stack_[i].line(), stack_[i].label()); + } + } + JS_ASSERT(stack_[*size_].js()); JS_ASSERT(stack_[*size_].script() == script); JS_ASSERT(strcmp((const char*) stack_[*size_].label(), str) == 0);