On Sun, May 19, 2019 at 04:46:44PM +0200, Ingo Schwarze wrote:

> Hi,
> 
> Otto Moerbeek wrote on Sun, May 19, 2019 at 02:55:09PM +0200:
> > On Sun, May 19, 2019 at 08:50:20AM +0200, Jan Stary wrote:
> 
> >> Does 'J' simply make the junk level two and
> >> does 'j' simply make the junk level zero?
> 
> No, it does not.
> 
> For example, if sysctl vm.malloc_conf contains j and MALLOC_OPTIONS
> contains J, or if any one source contains "jJ" or "jjJ", you end
> up with level 1: During the first malloc call in the program, the
> j first lowers the level from 1 to 0, then the J raises the level
> back to 1, but not to 2.
> 
> >> The current "increase/decrease" wording in malloc(3)
> >> can suggest it has a memory. For example, setting
> >> 
> >>    vm.malloc_conf=J
> >> 
> >> "increases" junk level to two;
> >> does setting
> >> 
> >>    vm.malloc_conf=C
> >> 
> >> later retain a junk level of two,
> >> as there is no 'j' to "decrease" it,
> >> or is the junk level the defult of one now?
> 
> Your question makes no sense whatsoever.
> 
> First, the word "later" makes no sense.  Malloc initialization is
> only done once during a run of any given program.  So if the sysctl
> contains J during startup, that is what governs program behaviour.
> Changing the sysctl later no longer has any effect on the running
> program.
> 
> Besides, while J and j manipulate mopts.def_malloc_junk, C sets
> mopts.chunk_canaries.  One doesn't have anything to do with the
> other.
> 
> > C is a combined flag, containing J amongst others.
> 
> Neither the code nor the manual page appears to agree with that
> statement.  Are you maybe thinking of S?

yes, I was thinking of S indeed.

> 
> To provide another example, MALLOC_OPTIONS=jS results in junk level
> 1 because j lowers it from 1 to 0, then S raises it from 0 to 1.
> MALLOC_OPTIONS=jSS results in junk level 2, whereas MALLOC_OPTIONS=SSj
> results in junk level 1.
> 
> 
> The manual page already seems quite clear.  Well, maybe we could
> add one sentence for even more clarity.  Right now, some might think
> that earlier flags win.
> 
> OK?
>   Ingo

yes,

        -Otto
> 
> 
> Index: malloc.3
> ===================================================================
> RCS file: /cvs/src/lib/libc/stdlib/malloc.3,v
> retrieving revision 1.124
> diff -u -r1.124 malloc.3
> --- malloc.3  13 May 2019 06:04:55 -0000      1.124
> +++ malloc.3  19 May 2019 14:39:30 -0000
> @@ -270,6 +270,8 @@
>  in the program.
>  Each is scanned for the flags documented below.
>  Unless otherwise noted uppercase means on, lowercase means off.
> +During initialization, flags occurring later modify the behaviour
> +that was requested by flags processed earlier.
>  .Bl -tag -width indent
>  .It Cm C
>  .Dq Canaries .

Reply via email to