Arun Sharma wrote:

>For local unwinding, we have a defence mechanism against bad/missing
>unwind information, which could result in libunwind dereferencing
>bad pointers. This mechanism is based on msync(2) system call and
>significantly reduces the chances of a bad pointer dereference in
>libunwind.

msync(2) does not protect against reading from mapped but
read-protected addresses (MAP_NONE), which are not uncommon on x86_64.
We recently had a number of crashes resulting from this (although
libunwind was not directly involved in this case).

We are not aware of a good replacement, but pread(2) from
/proc/self/mem is surprisingly fast on Linux and would perhaps work.
Catching SIGSEGV is another messy (and expensive) alternative.



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

Reply via email to