From: David Daney <david.s.daney@gmail.com>
To: Alan Cooper <alcooperx@gmail.com>
Cc: linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: Stack unwind across signal frame
Date: Sat, 18 Feb 2012 09:05:52 -0800 [thread overview]
Message-ID: <4F3FDA70.9060304@gmail.com> (raw)
In-Reply-To: <CAOGqxeWjtr=SOY83ZFEdwJXXatqLLEN6SHre9-0DfeJfcyBhKQ@mail.gmail.com>
On 02/17/2012 01:13 PM, Alan Cooper wrote:
> I'm seeing a problem on both 2.6.37 and 3.3 MIPS kernels where I can't
> unwind through a MIPS signal frame.
You don't tell us the version of the unwinder (likely from libgcc) you
are using. There was a lot of work in this area four or five years ago,
I didn't take the time to do the required archaeology to determine the
exact patch, but likely you are missing this.
> It looks like this is caused by
> the VDSO code that was added 2/2010.
Some CPUs have errata necessitating a different signal frame layout, on
these CPUs, you wouldn't be able to unwind either, even pre mips-vdso.
> When the unwinder tries to find
> the frame info for the caller of the signal handler (the trampoline in
> VDSO), it can't find the eh_frame info because the address is in the
> VDSO area and stops unwinding. It looks like other platforms solve
> this by adding the eh_frame info for the VDSO area so the lookup
> works.
That's right. However all 'modern' GCCs and GDBs can unwind through
signal frames on all 2.4.x and later kernels. I would recommend
upgrading your GCC to 4.6.2, and see if you obtain better results.
> This problem ends up breaking pthread cleanup for C++ programs because
> the cleanup is done using a class with the expectation that the
> destructor will be called when the thread gets canceled by a cancel
> signal. This seems like a big problem for all current MIPS kernels so
> I was wondering if I'm missing something?
A modern libgcc I think.
>
> If this is correct, then it seems like the best solution would be to
> add the VDSO eh_frame info to MIPS.
Having a correct eh_frame in the vdso, would be nice, but is not the
highest priority for me.
David Daney
prev parent reply other threads:[~2012-02-18 17:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-17 21:13 Stack unwind across signal frame Alan Cooper
2012-02-18 7:12 ` Hillf Danton
2012-02-18 17:05 ` David Daney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F3FDA70.9060304@gmail.com \
--to=david.s.daney@gmail.com \
--cc=alcooperx@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.