kmem_flags
Flag
- Description
-
The Oracle Solaris kernel memory allocator has various debugging and test options.
Five supported flag settings are described here.
Flag Setting Description AUDIT
0x1
The allocator maintains a log that contains recent history of its activity. The number of items logged depends on whether
CONTENTS
is also set. The log is a fixed size. When space is exhausted, earlier records are reclaimed.TEST
0x2
The allocator writes a pattern into freed memory and checks that the pattern is unchanged when the buffer is next allocated. If some portion of the buffer is changed, then the memory was probably used by a client that had previously allocated and freed the buffer. If an overwrite is identified, the system panics.
REDZONE
0x4
The allocator provides extra memory at the end of the requested buffer and inserts a special pattern into that memory. When the buffer is freed, the pattern is checked to see if data was written past the end of the buffer. If an overwrite is identified, the kernel panics.
CONTENTS
0x8
The allocator logs up to 256 bytes of buffer contents when the buffer is freed. This flag requires that
AUDIT
also be set.The numeric value of these flags can be logically added together and set by a file in the
/etc/system.d
directory.LITE
0x100
Does minimal integrity checking when a buffer is allocated and freed. When enabled, the allocator checks that the redzone has not been written into, that a freed buffer is not being freed again, and that the buffer being freed is the size that was allocated. Do not combine this flag with any other flags.
- Data Type
-
Signed integer
- Default
-
0 (disabled)
- Range
-
0 (disabled) or 1 - 15 or 256 (0x100)
- Dynamic?
-
Yes. Changes made during runtime only affect new kernel memory caches. After system initialization, the creation of new caches is rare.
- Validation
-
None
- When to Change
-
When memory corruption is suspected
- Commitment Level
-
Unstable