Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
etc.linux.memoryerror
Handle page protection errors using D errors (exceptions) or asserts.
License:
Distributed under the
Boost Software License 1.0.
(See accompanying file LICENSE_1_0.txt)
Authors:
Amaury SECHET, FeepingCreature, Vladimir Panteleev
Source etc/linux/memoryerror.d
- nothrow @system bool
registerMemoryErrorHandler
(); - Register memory error handler, store the old handler.NullPointerError is thrown when dereferencing null pointers. A generic InvalidPointerError error is thrown in other cases.Returns:whether the registration was successful
Limitations Only x86 and x86_64 are supported for now.
- nothrow @system bool
deregisterMemoryErrorHandler
(); - Revert the memory error handler back to the one from before calling registerMemoryErrorHandler().Returns:whether the registration of the old handler was successful
- class
InvalidPointerError
: object.Error; - Thrown on POSIX systems when a SIGSEGV signal is received.
- class
NullPointerError
: etc.linux.memoryerror.InvalidPointerError; - Thrown on null pointer dereferences.
- bool
registerMemoryAssertHandler
()(); - Registers a signal handler for SIGSEGV that turns them into an assertion failure, providing a more descriptive error message and stack trace if the program is compiled with debug info and D assertions (as opposed to C assertions).Differences with the registerMemoryErrorHandler version are:
- The handler is registered with SA_ONSTACK, so it can handle stack overflows.
- It uses assert(0) instead of throw new Error and doesn't support catching the error.
- This is a template so that the -check and -checkaction flags of the compiled program are used, instead of the ones used for compiling druntime.
Returns:whether the registration was successful - @system bool
deregisterMemoryAssertHandler
(); - Revert the memory error handler back to the one from before calling registerMemoryAssertHandler().Returns:whether the registration of the old handler was successful
Copyright © 1999-2025 by the D Language Foundation | Page generated by
Ddoc on Mon Apr 28 07:00:55 2025