Hi,
J/j is actually a three valued var. So document that and make it
possible to set all three values. Default is still 1.
-Otto
Index: share/man/man5/malloc.conf.5
===================================================================
RCS file: /cvs/src/share/man/man5/malloc.conf.5,v
retrieving revision 1.6
diff -u -p -r1.6 malloc.conf.5
--- share/man/man5/malloc.conf.5 19 Feb 2016 23:27:17 -0000 1.6
+++ share/man/man5/malloc.conf.5 2 Jul 2016 08:36:19 -0000
@@ -35,7 +35,8 @@ and finally looks at the global variable
.Va malloc_options
in the program.
Each is scanned for the following flags.
-Flags are single letters, uppercase means on, lowercase means off.
+Flags are single letters, unless otherwise noted uppercase means on,
+lowercase means off.
.Bl -tag -width indent
.It Cm C
.Dq Canaries .
@@ -77,20 +78,23 @@ cause a segmentation fault upon any acce
Pass a hint to the kernel about pages we don't use.
If the machine is paging a lot this may help a bit.
.It Cm J
-.Dq Junk .
-Fill some junk into the area allocated.
+.Dq More junking .
+Increase the junk level by one if it is smaller than 2.
+.It Cm j
+.Dq Less junking .
+Decrease the junk level by one if it is larger than 0.
+Junking writes some junk bytes into the area allocated.
Currently junk is bytes of 0xd0 when allocating; this is pronounced
.Dq Duh .
\&:-)
Freed chunks are filled with 0xdf.
-.It Cm j
-.Dq Don't Junk .
-By default, small chunks are always junked, and the first part of pages
-is junked after free.
-The reuse of freed memory is delayed.
-After the delay, the filling pattern is validated
-and the process is aborted if the pattern was modified.
-This option ensures that no junking is performed.
+By default the junk level is 1, small chunks are always junked,
+and the first part of pages is junked after free.
+After a delay (if not switched off by the F option),
+the filling pattern is validated and the process is aborted if the pattern
+was modified.
+If the junk level is zero, no junking is performed.
+For junk level 2 junking is done without size restrictions.
.It Cm P
.Dq Move allocations within a page.
Allocations larger than half a page but smaller than a page
Index: lib/libc/stdlib/malloc.c
===================================================================
RCS file: /cvs/src/lib/libc/stdlib/malloc.c,v
retrieving revision 1.191
diff -u -p -r1.191 malloc.c
--- lib/libc/stdlib/malloc.c 30 Jun 2016 09:00:48 -0000 1.191
+++ lib/libc/stdlib/malloc.c 2 Jul 2016 08:36:19 -0000
@@ -533,10 +533,12 @@ omalloc_parseopt(char opt)
mopts.malloc_hint = 1;
break;
case 'j':
- mopts.malloc_junk = 0;
+ if (mopts.malloc_junk > 0)
+ mopts.malloc_junk--;
break;
case 'J':
- mopts.malloc_junk = 2;
+ if (mopts.malloc_junk < 2)
+ mopts.malloc_junk++;
break;
case 'n':
case 'N':