tree d21452a2da952a25aa2bd06d4e8f3bd921804252
parent 335889ac12794803d6b2d72037b6a90fcdb1081a
author Elliott Hughes <enh@google.com> 1337724645 -0700
committer Elliott Hughes <enh@google.com> 1337728450 -0700

Switch to libcorkscrew for native stack traces.

This is both for the current thread (which backtrace(3) could do) and other
threads, which is functionality we didn't have on x86 before.
We jump through the appropriate hoops to get static symbols as well as dynamic
ones.

Also unify the existing native stack dumpers so they can share the best code.

Example x86 check failure:

  *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) fault addr 0xdeadd00d
  Registers:
      eax: 0x00000000    ebx: 0x55a966f0    ecx: 0x55d523c0    edx: 0x09225a50
      edi: 0x559d9b84    esi: 0xfffd8bcc    ebp: 0x55a9aba0    esp: 0xfffd8b90
      eip: 0x558e2e98                    eflags: 0x00010246 [ PF ZF IF ]
       cs: 0x00000023     ds: 0x0000002b     es: 0x0000002b     fs: 0x00000007
       gs: 0x00000063     ss: 0x0000002b
  Backtrace:
  	#00 unwind_backtrace_thread+536 [0x55d76bb8] (libcorkscrew.so)
  	#01 art::DumpNativeStack(std::ostream&, int, char const*, bool)+79 [0x55924fcf] (libartd.so)
  	#02 art::HandleUnexpectedSignal(int, siginfo*, void*)+1431814659 [0x5597cc23] (libartd.so)
  	#03 __kernel_rt_sigreturn [0x55573410] ([vdso])
  	#04 art::Runtime::Abort()+600 [0x558e2e98] (libartd.so)
  	#05 art::LogMessage::~LogMessage()+1052 [0x5580c16c] (libartd.so)
  	#06 art::EnsureResolved(art::Class*)+336 [0x5570dad0] (libartd.so)
  	#07 art::ClassLinker::FindClass(char const*, art::ClassLoader const*)+144 [0x5571bc90] (libartd.so)
  	#08 art::ClassLinker::FindSystemClass(char const*)+43 [0x5572287b] (libartd.so)
  	#09 art::ClassLinker::FinishInit()+82 [0x557228d2] (libartd.so)
  	#10 art::ClassLinker::InitFromImage()+1469 [0x5572451d] (libartd.so)
  	#11 art::ClassLinker::CreateFromImage(art::InternTable*)+60 [0x5572583c] (libartd.so)
  	#12 art::Runtime::Init(std::vector<std::pair<std::string, void const*>, std::allocator<std::pair<std::string, void const*> > > const&, bool)+943 [0x558e882f] (libartd.so)
  	#13 art::Runtime::Create(std::vector<std::pair<std::string, void const*>, std::allocator<std::pair<std::string, void const*> > > const&, bool)+119 [0x558e9057] (libartd.so)
  	#14 art::Dex2Oat::CreateRuntime(std::vector<std::pair<std::string, void const*>, std::allocator<std::pair<std::string, void const*> > >&, art::InstructionSet)+42 [0x80ac68a] (dex2oatd)
  	#15 art::Dex2Oat::Create(std::vector<std::pair<std::string, void const*>, std::allocator<std::pair<std::string, void const*> > >&, art::InstructionSet, unsigned int, bool)+60 [0x80ac87c] (dex2oatd)
  	#16 art::dex2oat(int, char**)+3167 [0x80894cf] (dex2oatd)
  	#17 main+17 [0x8086a01] (dex2oatd)
  	#18 __libc_start_main+230 [0x55c12bd6] (libc-2.11.1.so)

Example x86 SIGQUIT dump (note the three stacks, and note the absence of all
the crap that makes dalvik's attempt so unreadable):

  "Thread-10" prio=5 tid=11 VmWait
    | group="main" sCount=1 dsCount=0 obj=0x612d6620 self=0x884f8f0
    | sysTid=30512 nice=0 sched=0/0 cgrp=default handle=1458686832
    | schedstat=( 1249502 8995 26 ) utm=0 stm=0 core=14 HZ=100
    | stackSize=1044KB stack=0x57905000-0x57906000
    kernel: futex_wait_queue_me+0xcd/0x110
    kernel: futex_wait+0x1e5/0x310
    kernel: do_futex+0x101/0xb00
    kernel: compat_sys_futex+0x75/0x160
    kernel: sysenter_dispatch+0x7/0x2e
    native: __kernel_vsyscall+14 [0x5557342e] ([vdso])
    native: pthread_mutex_lock+54 [0x55cd8bf6] (libc-2.11.1.so)
    native: art::Mutex::Lock()+86 [0x55823a86] (libartd.so)
    at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:75)
    at java.lang.StringBuilder.<init>(StringBuilder.java:54)
    at java.lang.Thread.create(Thread.java:427)
    at java.lang.Thread.<init>(Thread.java:223)
    at ThreadStress$1.run(ThreadStress.java:134)

Change-Id: Id263e51a167bcfc623634f910e9d138a1f472db7
