Re: Getting the way a SIGSEGV append when catching a SIGSEGV from within

From: none
Date: Mon Mar 27 2017 - 14:55:26 EST


Le 2017-03-27 17:30, Richard Weinberger a ÃcritÂ:
On Mon, Mar 27, 2017 at 4:45 PM, none <ytrezq@xxxxxxxxxx> wrote:
Hello,

Thereâs three way to perform an invalid memory access :

The attempt to execute/jump at an invalid address.
The attempt to read at an invalid address.
The attempt to write at an invalid address.

Determining the execute case with rt_sigaction is easy : the last value of
eip match the value of the address which caused the segfault.

But how to know if the SIGSEGV occurred by a read or by a write attempt ? In
the same time shouldnât that information belong in the mmu ?

Did you look at the machine specific context of SIGSEGV?
It will give you access to the error code and the trap number.

Sorry but so, in the case of x86_64, which is the struct member I need to look at ?