JDK-6308289 : nsk/regression/b4287029 fails because of small stack size specified
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2005-08-09
  • Updated: 2012-02-01
  • Resolved: 2005-08-30
Related Reports
Duplicate :  
Relates :  
Description
Problem submitted by ###@###.### :

nsk/regression/b4287029 is failing for long time already.
It fails since the small stack size is specified -Xss64k.
The tests passed with -Xss128k.
I think the test should be modified for 64-bits VM.

[kvn@wowamd b4287029]$ /var/tmp/fhsu/Work/JDK/NIGHTLY/C2_Baseline/linux-amd64/bin/java -server -Xcomp -XX:CompileThreshold=100 -Xss64k b4287029
VM option 'CompileThreshold=100'
Segmentation fault
[kvn@wowamd b4287029]$ /var/tmp/fhsu/Work/JDK/NIGHTLY/C2_Baseline/linux-amd64/bin/java -server -Xcomp -XX:CompileThreshold=100 -Xss96k b4287029
VM option 'CompileThreshold=100'
**> b4287029 java test started!
**> b4287029 java test is finishing...

It failed during start:

[kvn@wowamd b4287029]$ gdb gamma
GNU gdb Red Hat Linux (6.3.0.0-0.31rh)
...
This GDB was configured as "x86_64-redhat-linux-gnu"...Using host libthread_db l
ibrary "/lib64/tls/libthread_db.so.1".

(gdb) run -Xcomp -XX:CompileThreshold=100 -Xss64k b4287029
Starting program: /.automount/vmsqe/root/export/nightly/mantis/DTWS/results/07-27-05/ServerVM/64BITLINUX-AMD64/comp/C2_Baseline/nsk.quick_regression-NIGHTLY-C2_Baseline-ServerVM-comp-64BITLINUX-AMD64-2005-07-27-19-43-25/ResultDir/b4287029/gamma -Xcomp -XX:CompileThreshold=100 -Xss64k b4287029
[Thread debugging using libthread_db enabled]
[New Thread 182907540576 (LWP 30900)]
VM option 'CompileThreshold=100'

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 182907540576 (LWP 30900)]
0x0000002a957fb64e in CodeSection::initialize_shared_locs () from ./libjvm.so
(gdb) where
#0  0x0000002a957fb64e in CodeSection::initialize_shared_locs ()   from ./libjvm.so
#1  0x0000002a957fb74a in CodeSection::initialize_locs_from ()   from ./libjvm.so
#2  0x0000002a957fc816 in CodeBuffer::relocate_code_to () from ./libjvm.so
#3  0x0000002a957fc55e in CodeBuffer::copy_code_to () from ./libjvm.so
#4  0x0000002a957f78f2 in CodeBlob::CodeBlob$base () from ./libjvm.so
#5  0x0000002a957f9204 in ExceptionBlob::create () from ./libjvm.so
#6  0x0000002a95cce3e2 in OptoRuntime::setup_exception_blob ()   from ./libjvm.so
#7  0x0000002a95cbed8c in OptoRuntime::generate () from ./libjvm.so
#8  0x0000002a9581e2af in compiler2_init () from ./libjvm.so
#9  0x0000002a95910e37 in init_globals () from ./libjvm.so
#10 0x0000002a95d98f92 in Threads::create_vm () from ./libjvm.so
#11 0x0000002a959d97d9 in JNI_CreateJavaVM () from ./libjvm.so
#12 0x00000000400026e6 in InitializeJVM (pvm=0x7fbffff4a8, penv=0x7fbffff4a0,    ifn=0x7fbffff440)
    at /PrtBuildDir/workspace/src/os/linux/launcher/java.c:1065
#13 0x00000000400018ce in main (argc=0, argv=0x7fbffff5d0)
    at /PrtBuildDir/workspace/src/os/linux/launcher/java.c:313
(gdb)

===

We have two problems from hotspot side here:
1) There is no documetation saying minimal stack size for different platforms (32/64 bit)
2) java launcher or hotspot itself should provide error messages for very small values of Xss specified.

PS Using 64k of stack for startup just 13 methods is rather expensive. Maybe we can decrease this value?
PPS Is value of Xss been used for internal VM threads(like GC, finilizer, compiler)?

Comments
EVALUATION Linux/AMD64 has a minimum stack requirement of 64K, that's the amount of stack needed to run helloworld. I checked wowamd.sfbay, yeah, it looks like primordial thread's stack space has been reduced (probably the same stack coloring/exec-shield issue that's been around in many Linux kernels). I tried my launcher build with the fix for 6316197 and the problem is gone. regards, -hui
30-08-2005