* [RFD] how to get something like chkspace / kinfo_getvmmap?
@ 2012-03-14 14:31 EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
2012-03-14 22:42 ` Peter Waechtler
0 siblings, 1 reply; 2+ messages in thread
From: EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31) @ 2012-03-14 14:31 UTC (permalink / raw)
To: linux-kernel@vger.kernel.org; +Cc: pwaechtler@mac.com
Hi,
for implementing robust exception handlers that print out a backtrace in
the signal handler, it would be nice to have a syscall to check if a
memory access would fail.
I know that one can parse /proc/self/maps (like libsigsegv does).
libunwind employs an addrspace->access_mem() method that does an
unprotected access because there is no (easy) way on Linux.
How about enhancing mincore() with a few bits that tells the caller how
the protection bits are?
The main use case is in an embedded system to avoid that the handler
(already running on an alternate signal stack) faults if the stack pointer
achieved to point into the guard page - causing backtrace() to fail.
mincore() on FreeBSD provides some more bits, but still the access bits
are missing.
MINCORE_INCORE Page is in core (resident).
MINCORE_REFERENCED Page has been referenced by us.
MINCORE_MODIFIED Page has been modified by us.
MINCORE_REFERENCED_OTHER Page has been referenced.
MINCORE_MODIFIED_OTHER Page has been modified.
MINCORE_SUPER Page is part of a "super" page. (only i386 &
amd64)
add
MINCORE_PROT_W
MINCORE_PROT_R
MINCORE_PROT_X
So essentially I'm looking for a way for mgetprotect(2) or
mprotect(addr, len, PROT_GET, &prot_bits)?
But this is really ugly ;)
input welcome
Peter Wächtler
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [RFD] how to get something like chkspace / kinfo_getvmmap?
2012-03-14 14:31 [RFD] how to get something like chkspace / kinfo_getvmmap? EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
@ 2012-03-14 22:42 ` Peter Waechtler
0 siblings, 0 replies; 2+ messages in thread
From: Peter Waechtler @ 2012-03-14 22:42 UTC (permalink / raw)
To: EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
Cc: linux-kernel@vger.kernel.org
On 14.03.2012 15:31, EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
wrote:
> Hi,
>
> for implementing robust exception handlers that print out a backtrace in
> the signal handler, it would be nice to have a syscall to check if a
> memory access would fail.
>
> I know that one can parse /proc/self/maps (like libsigsegv does).
> libunwind employs an addrspace->access_mem() method that does an
> unprotected access because there is no (easy) way on Linux.
>
>
> How about enhancing mincore() with a few bits that tells the caller how
> the protection bits are?
> The main use case is in an embedded system to avoid that the handler
> (already running on an alternate signal stack) faults if the stack pointer
> achieved to point into the guard page - causing backtrace() to fail.
>
> mincore() on FreeBSD provides some more bits, but still the access bits
> are missing.
>
> MINCORE_INCORE Page is in core (resident).
> MINCORE_REFERENCED Page has been referenced by us.
> MINCORE_MODIFIED Page has been modified by us.
> MINCORE_REFERENCED_OTHER Page has been referenced.
> MINCORE_MODIFIED_OTHER Page has been modified.
> MINCORE_SUPER Page is part of a "super" page. (only i386&
> amd64)
>
> add
>
> MINCORE_PROT_W
> MINCORE_PROT_R
> MINCORE_PROT_X
Well, I guess some code will help?
This will also help in recognizing a guard page, for a clear and
unambiguous:
"stack overflow" in multi-threaded programs.
Peter
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-03-14 23:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-14 14:31 [RFD] how to get something like chkspace / kinfo_getvmmap? EXTERNAL Waechtler Peter (Fa. TCP, CM-AI/PJ-CF31)
2012-03-14 22:42 ` Peter Waechtler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox