Name: krT82822 Date: 04/29/99
Problem apparently only occurs when running the JRE
with the JIT enabled. It occurs both in JRE 1.1.6 and JRE 1.1.7
on Solaris 2.5.1 and Solaris 2.6. It has never been observed
on NT 4.0 (where JRE 1.1.7b is the latest we've tested).
The problem exhibits itself only (so far) when running an extensive
set of MATs (Minimum acceptance tests) against our Data Replication
server application. Each time it occurs (and it does not occur
every time), the following Thread Stack dump is produced:
(This particular dump was produced on a Solaris 2.6 machine
running JRE 1.1.7 with JIT enabled)
SIGILL 4* illegal instruction
si_signo [4]: SIGILL 4* illegal instruction
si_errno [0]: Error 0
si_code [1]: ILL_ILLOPC [addr: 0x6d1d98c0]
stackbase=6ECD3D74, stackpointer=6ECD2B14
Full thread dump:
"Maint Port" (TID:0x6d1d2120, sys_thread_t:0x2dcb08, state:R, thread_t: t@11, sp:0x6ecd3d80 threadID:0x6ecd3de0, stack_base:0x6ecd3d74, stack_size:0x22000) prio=5 *current thread*
com.sybase.tds.SrvReceiver.createSession(Compiled Code)
com.sybase.ra.beanmgr.TDSPortHandler.createPort(Compiled Code)
com.sybase.ra.beanmgr.MaintPort$MaintPortServerThread.run(Compiled Code)
java.lang.Thread.run(Compiled Code)
"Thread" (TID:0x6d1d1740, sys_thread_t:0x2c8c28, state:CW, thread_t: t@10, sp:0x6ee42d80 threadID:0x6ee43de0, stack_base:0x6ee43d74, stack_size:0x22000) prio=5
java.lang.Object.wait(Compiled Code)
com.sybase.ra.util.BoundedBuffer.take(Compiled Code)
com.sybase.ra.ltm.LTM.run(Compiled Code)
java.lang.Thread.run(Compiled Code)
"LR EventService Thread" (TID:0x6d1d1560, sys_thread_t:0x2bcad8, state:CW, thread_t: t@9, sp:0x6ee72cd0 threadID:0x6ee73de0, stack_base:0x6ee73d74, stack_size:0x22000) prio=5
java.lang.Object.wait(Compiled Code)
com.sybase.ra.lr.EventQueue.next(Compiled Code)
com.sybase.ra.lr.LREventService.run(Compiled Code)
com.sybase.ra.util.RunnableTask.run(Compiled Code)
com.sybase.ra.util.ThreadPoolThread.run(Compiled Code)
"T_THREADPOOL" (TID:0x6d1d0ce8, sys_thread_t:0x2a5308, state:CW, thread_t: t@8, sp:0x6efc2e18 threadID:0x6efc3de0, stack_base:0x6efc3d74, stack_size:0x22000) prio=5
java.lang.Object.wait(Compiled Code)
com.sybase.ra.util.ThreadPool.getRunnableTask(Compiled Code)
com.sybase.ra.util.ThreadPool.run(Compiled Code)
"LTI Thread" (TID:0x6d1bf690, sys_thread_t:0x2137b0, state:CW, thread_t: t@7, sp:0x6eff2e00 threadID:0x6eff3de0, stack_base:0x6eff3d74, stack_size:0x22000) prio=5
java.lang.Object.wait(Compiled Code)
com.sybase.ra.lti.LTI.run(Compiled Code)
java.lang.Thread.run(Compiled Code)
"SIGQUIT handler" (TID:0x6d1982a0, sys_thread_t:0x80ec8, state:R, thread_t: t@5, sp:0x6fb43af0 threadID:0x6fb43de0, stack_base:0x6fb43d74, stack_size:0x22000) prio=0
"Finalizer thread" (TID:0x6d198088, sys_thread_t:0x80e38, state:CW, thread_t: t@4, sp:0x6fb73a30 threadID:0x6fb73de0, stack_base:0x6fb73d74, stack_size:0x22000) prio=1
"main" (TID:0x6d1980b0, sys_thread_t:0x60348, state:CW, thread_t: t@1, sp:0xeffff0a0 threadID:0x236f8, stack_base:0x0, stack_size:0x7ffff000) prio=5
Monitor Cache Dump:
com.sybase.ra.util.ThreadPool@6D1D0CE8/6D3BD450: <unowned>
Waiting to be notified:
"T_THREADPOOL" (0x2a5308)
com.sybase.ra.beanmgr.TDSPortHandler@6D1D1AC0/6D3244F8: owner "Maint Port" (0x2dcb08, 1 entry)
com.sybase.ra.util.BoundedBuffer@6D1CFD58/6D3B3BD8: <unowned>
Waiting to be notified:
"Thread" (0x2c8c28)
com.sybase.ra.lr.EventQueue@6D1D0C80/6D3BD710: <unowned>
Waiting to be notified:
"LR EventService Thread" (0x2bcad8)
com.sybase.ra.util.RunnableTask@6D1D11F0/6D3BEF00: owner "LR EventService Thread" (0x2bcad8, 1 entry)
com.sybase.ra.lti.LTI@6D1B3B70/6D314FB0: <unowned>
Waiting to be notified:
"LTI Thread" (0x2137b0)
Registered Monitor Dump:
PCMap lock: <unowned>
Thread queue lock: <unowned>
Waiting to be notified:
"main" (0x60348)
Name and type hash table lock: <unowned>
String intern lock: <unowned>
JNI pinning lock: <unowned>
JNI global reference lock: <unowned>
BinClass lock: <unowned>
Class loading lock: <unowned>
Java stack lock: <unowned>
Code rewrite lock: <unowned>
Heap lock: <unowned>
Has finalization queue lock: <unowned>
Finalize me queue lock: <unowned>
Waiting to be notified:
"Finalizer thread" (0x80e38)
Monitor registry: owner "Maint Port" (0x2dcb08, 1 entry)
Abort
[1] Exit 134 ra_sol -i rao_ware
The current thread, "Maint Port", is executing createSession() --
a one-liner which calls another method startSession()
as follows:
public SrvSession createSession(Socket socket)
throws IOException
{
return startSession(new SrvSession(socket.getInputStream(),
socket.getOutputStream(),
false, false)
);
}
This method is entered each time a client attempts to make a
connection to the server. We have not yet been able to reproduce
the problem outside of our automated test suite.
According to the Thread Stack Dump produced, control is still
in this method. Beyond that I have no way of knowing whether
the cause of the stack and core dump is something in
startSession(), the constructor for SrvSession, or in
Socket.getXXXStream() calls.
In one instance when the JRE crashed (1.1.7 JIT), a File I/O
error occurred in the test case immediately before the test
which crashed. It is unknown if the File I/O problem is directly
related.
I have a core file saved from the above crash. If it would be
of assistance, I can email it seperately.
(Review ID: 57661)
======================================================================