On Wed, Dec 2, 2009 at 1:35 AM, Mattias Engdegård <[email protected]>wrote:

>
> Speaking of which, I don't believe msync() fails on non-readable
> memory (PROT_NONE), so it isn't a perfectly reliable way of verifying
> whether an address can be read from without segfaulting. In another
> stack trace application, we had to abandon msync() for this purpose
> and use pread() from /proc/self/mem instead - more expensive, but safer.
>

I think of msync as a filter for bogus addresses, not a reliable guarantee.
The way libunwind is being used now (always on heap profiling), any slowdown
would cause people to compile code with frame pointers and use a simpler
unwinder.

If there is a way to check if a given virtual address is a known good stack
address, we could use that. But unfortunately there is no portable way of
doing that.

 -Arun
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to