Resolution: Description:
============
BWEngine Crash using JDBC OCI Drivers, but works from Designer.
In JVM Core Dump - EXCEPTION_STACK_OVERFLOW.
==========================================.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_STACK_OVERFLOW (0xc00000fd) at pc=0x000000000ff0ca67, pid=1300, tid=4132
#
# JRE version: 6.0_30-b12
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.5-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [oraldapclnt11.dll+0x16ca67]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
===================================.
This issue is observed while using Oracle OCI ojdbc drivers on Windows 2008 and JVM 1.6 . You will not see same behavior when using BWEngine with TIBCO DataDirect Drivers or Oracle Thin Drivers.
Environment:
========
TIBCO ActiveMatrix BusinessWorks(TM) 5.10.x.
TIBCO Runtime Agent(TM)5.7.x.
TIBCO Designer 5.7.x.
JDBC Driver version is 11.2.0.1.0
Oracle 10g Enterprise Edition Release 10.1.0.5.0 – 64 bit.
Operating System: Windows 2008.
Resolution:
=======
Increase the java.thread.stack.size=256K to 512k or greater in the application .tra file.
References
=======
Check the details of the EXCEPTION_STACK_OVERFLOW in the Troubleshooting Guide for Java SE 6 with HotSpotVM - > Chapter 4 Troubleshooting System Crashes. The Guide can be downloaded from www.Oracle.com.
Crash due to StackOverflow /EXCEPTION_STACK_OVERFLOW :
=========================.
A stack overflow in Java language code will normally result in the offending thread throwing java.lang.StackOverflowError. On the other hand, C and C++ write past the end of the stack and provoke a stack overflow. This is a fatal error which causes the process to terminate. In theHotSpot implementation, Java methods share stack frames with C/C++ native code, namely user native code and the virtual machine itself. Java methods generate code that checks that stack space is available a fixed distance towards the end of the stack so that the native code can be called without exceeding the stack space. This distance towards the end of the stack is called “Shadow Pages.” The size of the shadow pages is between 3 and 20 pages, depending on the platform. This distance is tunable, so that applications with native code needing more than the default distance can increase the shadow page size. The option to increase shadow pages is
-XX:StackShadowPages=n, where n is greater than the default stack shadow pages for the platform.
If your application gets a segmentation fault without a core file or fatal error log file (see Appendix C, “Fatal Error Log”) or a STACK_OVERFLOW_ERROR on Windows or the message “An irrecoverable stack overflow has occurred,” this indicates that the value of StackShadowPages was exceeded and more space is needed. If you increase the value of StackShadowPages, you might also need to increase the default thread stack size using the -Xssparameter. Increasing the default thread stack size might decrease the number of threads that can be created, so be careful in choosing a value for the thread stack size. The thread stack size varies by platform from 256k to 1024k.
==========================.
Looking at above behavior and requirement to have higher thread.stack.size, Oracle OCI drivers needs more resource allocation .