RFR(S): 8186286: [BSD] Primary thread's stack size is reported incorrectly
David Holmes
david.holmes at oracle.com
Thu Aug 24 09:03:06 UTC 2017
Hi Gunter,
On 23/08/2017 11:40 PM, Haug, Gunter wrote:
> Hi David,
>
> Sorry for the late reply! I have corrected the typos and updated the change, here is the new webrev:
>
> http://cr.openjdk.java.net/~ghaug/webrevs/8186286.v2
The typos are not fixed in that webrev. ??
> Would you mind sponsoring it?
Sure.
> Re not using os::vm_page_size(): You’re right, and I thought the same - it’s certainly correct for the primary thread. However, os::vm_page_size() isn’t used in the function and I think it’s not much of a problem to call getpagesize() in this particular case.
Ok.
Thanks,
David
> Thanks and best regards,
> Gunter
>
>
>
> On 18.08.17, 06:18, "David Holmes" <david.holmes at oracle.com> wrote:
>
> Hi Thomas,
>
> On 18/08/2017 1:59 PM, Thomas Stüfe wrote:
> > Hi David,
> >
> > On Thu, Aug 17, 2017 at 11:54 PM, David Holmes <david.holmes at oracle.com
> > <mailto:david.holmes at oracle.com>> wrote:
> >
> > Hi Gunter,
> >
> > On 18/08/2017 1:01 AM, Haug, Gunter wrote:
> >
> > Thanks for the review, Aleksey and Thomas
> >
> > You’re right, it is much nicer to use the macros. I’ve updated
> > the change accordingly:
> > http://cr.openjdk.java.net/~ghaug/webrevs/8186286.v1
> > <http://cr.openjdk.java.net/~ghaug/webrevs/8186286.v1>
> >
> >
> > I'm unclear about the logic change here. If you round down then
> > there is a chance you will enter the following if-block where
> > otherwise you would not.
> >
> > 915 *size = align_down(*size, getpagesize());
> > 916
> > 917 if ((*size) < (DEFAULT_MAIN_THREAD_STACK_PAGES *
> > (size_t)getpagesize())) {
> >
> >
> > I don't see how this could happen? Gunters fix causes the size to snap
> > to the lower page boundary, but never cross it. The code below ensures a
> > lower cap at a page boundary.
>
> Yes you are right - sorry for the noise.
>
> David
>
> > If size was larger than that cap, after the align_down it will be at
> > most right at that cap. If it was lower than the cap, it stays lower. In
> > both cases behavior is unchanged.
> >
> > Cheers, Thomas
> >
> > Have you verified with a range of aligned and unaligned stack sizes
> > around that threshhold that everything works okay?
> >
> > Some typos in the comment block:
> >
> > alligned -> aligned
> > boundries -> boundaries
> > I round -> We round
> >
> > @Thomas: os::vm_page_size() is not used in
> > current_stack_region(), I think because of initialization
> > dependencies.
> >
> >
> > I don't see the dependency. It requires that it only be used after
> > os::init() has been called. AFAICS the first time we will use this
> > logic is when we attach the main thread, which happens after
> > os::init().
> >
> > Thanks,
> > David
> >
> > Best regards,
> > Gunter
> >
> > From: Thomas Stüfe <thomas.stuefe at gmail.com
> > <mailto:thomas.stuefe at gmail.com>>
> > Date: Thursday, 17. August 2017 at 15:06
> > To: "Haug, Gunter" <gunter.haug at sap.com
> > <mailto:gunter.haug at sap.com>>
> > Cc: "hotspot-dev at openjdk.java.net
> > <mailto:hotspot-dev at openjdk.java.net>"
> > <hotspot-dev at openjdk.java.net <mailto:hotspot-dev at openjdk.java.net>>
> > Subject: Re: RFR(S): 8186286: [BSD] Primary thread's stack size
> > is reported incorrectly
> >
> > Hi Gunter,
> >
> >
> > On Thu, Aug 17, 2017 at 2:24 PM, Haug, Gunter
> > <gunter.haug at sap.com
> > <mailto:gunter.haug at sap.com><mailto:gunter.haug at sap.com
> > <mailto:gunter.haug at sap.com>>> wrote:
> > Hi,
> >
> > can I please have reviews and a sponsor fort the following small
> > bug fix:
> > http://cr.openjdk.java.net/~ghaug/webrevs/8186286/
> > <http://cr.openjdk.java.net/~ghaug/webrevs/8186286/>
> > https://bugs.openjdk.java.net/browse/JDK-8186286
> > <https://bugs.openjdk.java.net/browse/JDK-8186286>
> >
> > At least on Mac OS 10.12 we have observed stack sizes of the
> > primary thread not aligned to pages boundries. This can be
> > provoked by e.g. setrlimit() (ulimit -s xxxx in the shell).This
> > voids the computation of the addresses of the guard pages.
> >
> > Fix:
> > Apparently Mac OS actually rounds upwards to next multiple of
> > page size however, it is conservative to round downwards here to
> > be on the safe side.
> >
> > Thanks and best regards,
> > Gunter
> >
> > Thanks for the patch!
> >
> > Very minor nits: what Alexey wrote (we also have "is_aligned").
> > Plus, any reason not to use os::vm_page_size()? Initialization
> > dependencies?
> >
> > Kind Regards, Thomas
> >
> >
> >
> >
>
>
More information about the hotspot-dev
mailing list