Need help to understand TLS behavior
cheleswer sahu
cheleswer.sahu at oracle.com
Mon Dec 14 12:34:14 UTC 2015
Hi,
I am investigating an issue, in which test with TLS size set to 32K is failing with StackOverFlowError. During investigation I found the below code
http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/solaris/classes/java/lang/UNIXProcess.java
ThreadFactory threadFactory = grimReaper -> {
// Our thread stack requirement is quite modest.
Thread t = new Thread(systemThreadGroup, grimReaper,
"process reaper", 32768);
Here reaper thread is created with fixed stack size "32768 ", which causes StackOverFlowError when TLS is set to 32k around.
If I remove this fixed size and make it default, test works fine.
Thread t = new Thread(systemThreadGroup, grimReaper,
"process reaper");
I have run several test with TLS size 32k , 64k ,128k and more .
The interesting part, it works well with 64k and 128k TLS size but not with 32k.
So my questions are as follows:
> What is the motivation behind the fixed thread stack size ?
> will it be ok to replace the fixed stack size with default or stack
size setting is platform sensitive?
> How TLS sizes are interpreted internally, which allows 64k and 128k
to work but not to 32k ?
I would really appreciate, if anyone have any opinion on this.
Regards,
Cheleswer
More information about the core-libs-dev
mailing list