Removed it. http://cr.openjdk.java.net/~qpzhang/8222334/webrev.03/jdk.changeset
By the way, could you please sponsor to push it once approved? thanks in advance. Regards Patrick -----Original Message----- From: David Holmes <david.hol...@oracle.com> Sent: Monday, April 15, 2019 2:33 PM To: Patrick Zhang OS <patr...@os.amperecomputing.com>; core-libs-dev <core-libs-dev@openjdk.java.net> Subject: Re: RFR: 8222334: java -Xss0 triggers StackOverflowError Hi Patrick, On 15/04/2019 3:42 pm, Patrick Zhang OS wrote: > Hi David, > > Many thanks, I integrated your updates into the new patch. Thanks. My only further comment is to not have: 947 * See JDK-8222334 for details Cross references from code to bug reports should be very rare and I don't think this one warrants it. No need to see updated webrev in that case. Cheers, David > >> I think STACK_SIZE_MINIMUM is an empirical value, NOT suitable for 'all' >> platforms, at least not that safe, for example, a tricky experiment is: >> create the initial thread with 320K, and have later VM inner threads created >> with 448K, on my aarch64 system, StackOverflowError would be thrown. >> Fortunately this probably would not occur in real cases, as -Xss60k, >> -Xss320k, etc. can be stopped by these if-clauses. I changed "all >> platforms" to "most platforms". >> "only used for windows" might ambiguously mean "GetDefaultJavaVMInitArgs >> returns 0 for windows only" or "only windows supports 0". I updated it as >> "for example, Windows" > > http://cr.openjdk.java.net/~qpzhang/8222334/webrev.02/ > > Regards > Patrick > > -----Original Message----- > From: David Holmes <david.hol...@oracle.com> > Sent: Monday, April 15, 2019 6:55 AM > To: Patrick Zhang OS <patr...@os.amperecomputing.com>; core-libs-dev > <core-libs-dev@openjdk.java.net> > Subject: Re: RFR: 8222334: java -Xss0 triggers StackOverflowError > > Hi Patrick, > > Please see: > > http://cr.openjdk.java.net/~dholmes/8222334/webrev/ > > for my suggested updates to the commentary. Note that > GetDefaultJavaVMInitArgs returns the build-time default stack sizes and so > will only return 0 (for "use the system default") on Windows. It is not > affected by -XX:ThreadStackSize=n as that only gets processed when the JVM is > actually loaded. > > Thanks, > David > > On 12/04/2019 6:11 pm, David Holmes wrote: >> Hi Patrick, >> >> First apologies that it took me so long to get my head around this. >> :) Let me summarise the problem as I see it. >> >> The launcher specifies no particular semantics for -Xss0, to it 0 is >> just a very small size. However the VM maps -Xss to >> -XX:ThreadStackSize and for it 0 means "use the platform default stack size". >> >> The launcher examines -Xss because it needs to use it to define the >> stacksize for the initial thread created to launch the VM. >> >> The VM examines -Xss to see what stacksize to use for subsequently >> created threads and it treats 0 as 'use the platform default' and it >> otherwise checks the value against some hardcoded minimums and >> reports an error if it is too small. >> >> The initial thread that loads the VM needs sufficient stack to be >> able to process things to the point where it can determine that the >> requested stacksize is too small and report the error. The value of >> the minimum stack is hardcoded into the launcher, as >> STACK_SIZE_MINIMUM (64KB). If the -Xss value is less than that then it gets >> set to that. >> >> If no -Xss is specified then the launcher asks the VM for a >> reasonable value to use for the stacksize of the initial thread (typically >> 1MB). >> >> The problem arises with -Xss0 because this causes the launcher to set >> an initial thread stacksize of STACK_SIZE_MINIMUM, but the VM sees >> this as "use the default" and so does not reject it and tries to >> continue with VM initialization. That can't succeed as we only have a >> tiny STACK_SIZE_MINIMUM stack and so we get StackOverflowError (or >> fail an assert in debug builds). >> >> So the solution, as Patrick proposes, is to treat -Xss0 in the >> launcher as-if -Xss has not been set and so use the VM suggested >> default for the initial thread's stacksize. >> >> So I agree with the functional change here, but have some alternate >> suggestions for additional commentary. Unfortunately I have to step >> away at the moment (its Friday night) so will send that later - sorry. >> >> Thanks, >> David >> >> On 12/04/2019 5:51 pm, Patrick Zhang OS wrote: >>> Moved this to core-libs-dev for review, thanks. >>> >>> Dropped and bcc'ed jdk-dev and jdk-updates-dev. >>> >>> Regards >>> Patrick >>> >>> -----Original Message----- >>> From: David Holmes <david.hol...@oracle.com> >>> Sent: Friday, April 12, 2019 3:43 PM >>> To: Patrick Zhang OS <patr...@os.amperecomputing.com>; >>> jdk-...@openjdk.java.net >>> Cc: jdk-updates-...@openjdk.java.net >>> Subject: Re: RFR: 8222334: java -Xss0 triggers StackOverflowError >>> >>> Hi Patrick, >>> >>> Please takes this to core-libs-dev for review. >>> >>> Thanks, >>> David >>> >>> On 12/04/2019 5:24 pm, Patrick Zhang OS wrote: >>>> Hi, >>>> >>>> Please review this patch. >>>> >>>> The problem is that the launcher does a check on the input -Xss and >>>> ensure it >=64K for the initial thread, while vm has another >>>> function to determine whether the input stack size is big enough to >>>> future threads, such as cgc_thread, vm_thread, java_thead etc. >>>> However if -Xss0, the initial thread is created with stack size >>>> 64K, while others use hotspot/system default sizes, which would >>>> trigger StackOverflowError. We could either fine tune the threshold >>>> 64K to be a bigger one, or have the initial thread created with >>>> system defaults that may be what the user expects. This patch >>>> chooses the second solution, to avoid potential side-effect of the first. >>>> >>>> This can be reproduced with 10, 11, 12 too, so I cc'ed >>>> jdk-updates-dev here. >>>> >>>> More details please refer to the ticket. >>>> >>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8222334 >>>> >>>> Webrev: http://cr.openjdk.java.net/~qpzhang/8222334/webrev.01/ >>>> >>>> Thanks for David's comments in Jira. >>>> >>>> Regards >>>> >>>> Patrick >>>>