libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] Urgent - Help - 64 bit google profiler crashes (li


From: Rajesh Balamohan
Subject: Re: [Libunwind-devel] Urgent - Help - 64 bit google profiler crashes (libunwind)
Date: Tue, 20 Feb 2007 05:12:22 +0000

Hi Arun and Jan,

Thankx a lot for the quick reply.

Arun - As mentioned, I tried installing libunwind in one of my 64 bit linux desktops and rebuilt google-perftools.

I still get the core dump. I am pasting the bt here from the coredump.


(gdb) bt
#0  0x00002b54dc4e5f4f in _Unwind_FindEnclosingFunction () from /lib64/libgcc_s.so.1
#1  0x00002b54dc4e6df7 in _Unwind_Backtrace () from /lib64/libgcc_s.so.1
#2  0x00002b54dbd6ddd9 in GetStackTrace (result=Variable "result" is not available.
) at stacktrace_x86_64-inl.h:100
#3  0x00002b54dbd6d50f in ProfileData::Add (this=0x2b54dbe6e9e0, pc=Variable "pc" is not available.
) at src/profiler.cc:495
#4  0x00002b54dbd6d72d in ProfileData::prof_handler (sig=Variable "sig" is not available.
) at src/profiler.cc:115
#5  <signal handler called>
#6  0x0000000000534e13 in Xpath_endElement (pContext=0x8c6f30) at xpath_nfa_runtime.c:748
#7  0x000000008f835f7b in ?? ()
#8  0x0000000000000001 in ?? ()
#9  0x0000000000000000 in ?? ()


This seems to be the same as the earlier one and its using libgcc again. I did the following for making google perftools.

>> make clean
./configure
make
make install
make check (throws some heacheck errors at the end of the run)

Also, google perftool src/base/linux_syscall_support.h in "static inline _syscall6(long int,.." from "static inline _syscall6(void *,...

This was changed to make it compilable in 64 bit. Otherwise it wasnt compiling.

Can you please let me know if some other setting has to be modified in order for google perftool to take libunwind instead of gcc?

On 2/20/07, Arun Sharma <address@hidden> wrote:
On 2/19/07, Jan Kratochvil <address@hidden> wrote:
> Hi,
>
> On Mon, 19 Feb 2007 13:03:56 +0100, Rajesh Balamohan wrote:
> ...
> > x86_64 x86_64 x86_64 GNU/Linux
> >
> > gdb) bt
> > #0  0x00002ba09f7fdf4f in _Unwind_FindEnclosingFunction () from /lib64/libgcc_s.so.1
>
> This unwinder is a part of libgcc contained in the GCC package.
> It is unrelated to this libunwind project where you posted the mail.
> libunwind is currently in use for libgcc only on the platform ia64.
>

Using the libgcc unwinder will cause deadlocks when used with the
google profiler, because of the interaction with tcmalloc.
Specifically, the libgcc unwinder calls malloc() in some code paths
and tcmalloc (the google implementation of malloc included) calls the
unwinder. There is a gcc bugzilla with the details.

For this reason, I'd strongly suggest using libunwind. If it's
installed on your system, autoconf will detect it and use it.
Unfortunately, there is no released version of libunwind that works
well with the google profiler. You'll have to use a recent git
snapshot.

-Arun



--
~Rajesh.B
reply via email to

[Prev in Thread] Current Thread [Next in Thread]