Subject RE: [Firebird-Java] JVM crashes from exception in JDBC driver
Author Robert DiFalco
Well, It's definitely a JVM bug. The JVM should never exit like that. It
may be related to this:

http://developer.java.sun.com/developer/bugParade/bugs/4885936.html

R.

-----Original Message-----
From: Ryan Baldwin [mailto:ryan.baldwin@...]
Sent: Thursday, October 02, 2003 6:40 AM
To: Firebird-Java@yahoogroups.com
Subject: RE: [Firebird-Java] JVM crashes from exception in JDBC driver


Hi Kenneth,

>But since arraycopy is called by FBBlob$FBBlobOutputStream.write ...
>it could also be non-JVM errors

I was going to post again to clarify what I said a bit but decided
against
it as it was a bit rambling - I was going to post -

>Really we should not be able to crash the virtual machine from just
java
>code which is why I suspect a JVM problem or hardware problem rather
then a
>problem with jaybird itself.

Just to clarify myself - It is possible that their 'is' a bug in the
jaybird
code and we are passing bad values into System.arraycopy - but if this
where
the case then an exception should be thrown - so if we are - or are not
passing bad parameters to this method then the crash is probarbly a JVM
problem. If we are passing bad parameters to this method for some reason
then the crash is hiding the usefull infomation that an exception would
contain. If this is the case the trying the client VM or perhaps
disabling
compilation altogether may show up an exception if their is a jaybird
bug -
allowing this to be investigated seperatly.

I hope this makes some sense.


>Maybe I should use ps.setBytes() instead?

What you are doing shouldent lead to the problem you are having - the
setBytes method would do this

if (value == BYTES_NULL_VALUE) {
setNull();
return;
}

byte[] data = field.encodeString(value, javaEncoding);
setBinaryStream(new ByteArrayInputStream(data), data.length);

So other then encoding the bytes acording to the javaEncoding for the
field
it would end up doing the same thing. I cant really say what would be
best -
but the method you are using should work.

It will be intersting to see if the problem reproduces with the client
VM.

Thanks
Ryan





-----Original Message-----
From: Kenneth Foo [mailto:kenneth@...]
Sent: 02 October 2003 14:02
To: Firebird-Java@yahoogroups.com
Subject: Re: [Firebird-Java] JVM crashes from exception in JDBC driver


Hi Ryan

The crash happens fairly frequent...about once a day or once
every 2 days, and it always happens at the same place.
(Attached are the logs files for 2 crashes)

Having the exception from java.lang.System.arraycopy
indicates that this is a JVM error.

But since arraycopy is called by FBBlob$FBBlobOutputStream.write ...
it could also be non-JVM errors.

I'm trying out with client JVM to see if anything happens within the
next couple of days.


Btw, my code that inconsistently causes the problem is

private static final void setBlob(PreparedStatement ps, int
columnindex,
Object v) throws java.sql.SQLException {
// Now set the actual binary column data by passing the
if (v==null)
ps.setNull(columnindex, java.sql.Types.BLOB);
else {
byte[] buf = null;
if (v instanceof byte[]) {
buf = (byte[])v;
}
else {
try {
buf = v.toString().getBytes("UTF8");
}
catch (java.io.UnsupportedEncodingException ex) {
throw new SQLException(ex.toString());
}
}
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
ps.setBinaryStream(columnindex, bais, buf.length);
}
}



Maybe I should use ps.setBytes() instead?

----- Original Message -----
From: "Ryan Baldwin" <ryan.baldwin@...>
To: <Firebird-Java@yahoogroups.com>
Sent: Thursday, October 02, 2003 7:31 PM
Subject: RE: [Firebird-Java] JVM crashes from exception in JDBC driver


> Hi,
>
> I've havent come across this problem myself. I looks quite
interesting.
How
> often does this happen ? Do you still have the hs_err_pid*.log files
for
the
> crashes that have happened. If so it might be worth looking back
through
> these.
>
> If the crash is consistant in terms of where and how it occurs I would
tend
> to suspect a JVM bug. If the crashses are more random then I might
begin
to
> suspect the hardware.
>
> Your using the Hotspot Server VM - it would be intersting to see if
you
can
> re-produce this bug with the hotspot client VM - as if it is not
possible
it
> may indicate a bug in the Hotspot Server VM's compiler or somthing
along
> those lines.
>
> Really we should not be able to crash the virtual machine from just
java
> code which is why I suspect a JVM problem or hardware problem rather
then
a
> problem with jaybird itself.
>
> I hope this is of some help.
>
> Ryan
>
>
>
> -----Original Message-----
> From: Kenneth Foo [mailto:kenneth@...]
> Sent: 02 October 2003 10:19
> To: firebird-java@yahoogroups.com
> Subject: [Firebird-Java] JVM crashes from exception in JDBC driver
>
>
> Hi All
>
> I'm getting this problem quite often in a production system.
> The JVM crashes with and error and it's usually fro mthis
> FBBlob$FBBlobOutputStream class...
> Any solutions? I think I'm running a fairly recent (about 1 or 2 weeks
old)
> CVS version of the driver.
>
> Regards
> Kenneth
>
> Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at
PC=0x6D565C4E
> Function=JVM_ArrayCopy+0x8E
> Library=c:\j2sdk1.4.1\jre\bin\server\jvm.dll
>
> Current Java thread:
> at java.lang.System.arraycopy(Native Method)
> at
> org.firebirdsql.jdbc.FBBlob$FBBlobOutputStream.write(FBBlob.java:747)
> at org.firebirdsql.jdbc.FBBlob.copyStream(FBBlob.java:459)
> at
>
org.firebirdsql.jdbc.FBLongVarCharField.copyBinaryStream(FBLongVarCharFi
eld.
> java:199)
> at
>
org.firebirdsql.jdbc.FBLongVarCharField.setBinaryStream(FBLongVarCharFie
ld.j
> ava:211)
> at
>
org.firebirdsql.jdbc.FBPreparedStatement.setBinaryStream(FBPreparedState
ment
> .java:156)
> at com.nic.connect.db.MessageDB.setBlob(MessageDB.java:293)
> at
>
com.nic.connect.db.MessageDB.prepareUpdateStatement(MessageDB.java:368)
> at
>
com.nic.connect.db.MessageDB.internalUpdateMessage(MessageDB.java:2175)
> at
com.nic.connect.db.MessageDB.createMessage(MessageDB.java:2051)
> at
>
com.nic.connect.cc.OperationsHandler.execute(OperationsHandler.java:596)
> at com.nic.cc.CommandManager.execute(CommandManager.java:43)
> at
>
com.nic.connect.cc.OperationsHandler.execute(OperationsHandler.java:541)
> at com.nic.cc.CommandManager.execute(CommandManager.java:43)
> at
com.nic.connect.ContextImpl.sendMessage(ContextImpl.java:747)
> at
>
org.apache.jsp.do_composemsg_jsp._jspService(do_composemsg_jsp.java:261)
> at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
va:2
> 10)
> at
>
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
> at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tion
> FilterChain.java:247)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erCh
> ain.java:193)
> at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.ja
> va:256)
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:643)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.ja
> va:191)
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:643)
> at
>
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.ja
va:2
> 46)
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:641)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at
>
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:241
5)
> at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:180
> )
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:643)
> at
>
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lve.
> java:171)
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:641)
> at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:172
> )
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:641)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java
> :174)
> at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvok
> eNext(StandardPipeline.java:643)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
> at
>
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
> at
>
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:59
4)
> at
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onne
> ction(Http11Protocol.java:392)
> at
>
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:56
5)
> at
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.jav
> a:619)
> at java.lang.Thread.run(Thread.java:536)
>
> Dynamic libraries:
> 0x00400000 - 0x00406000 c:\j2sdk1.4.1\bin\java.exe
> 0x77F80000 - 0x77FFA000 C:\WINNT\system32\ntdll.dll
> 0x77DB0000 - 0x77E0B000 C:\WINNT\system32\ADVAPI32.dll
> 0x77E80000 - 0x77F31000 C:\WINNT\system32\KERNEL32.dll
> 0x77D30000 - 0x77D9E000 C:\WINNT\system32\RPCRT4.dll
> 0x78000000 - 0x78046000 C:\WINNT\system32\MSVCRT.dll
> 0x6D470000 - 0x6D6E1000 c:\j2sdk1.4.1\jre\bin\server\jvm.dll
> 0x77E10000 - 0x77E6F000 C:\WINNT\system32\USER32.dll
> 0x77F40000 - 0x77F79000 C:\WINNT\system32\GDI32.dll
> 0x77570000 - 0x775A0000 C:\WINNT\System32\WINMM.dll
> 0x6D1E0000 - 0x6D1E7000 c:\j2sdk1.4.1\jre\bin\hpi.dll
> 0x6D310000 - 0x6D31E000 c:\j2sdk1.4.1\jre\bin\verify.dll
> 0x6D220000 - 0x6D239000 c:\j2sdk1.4.1\jre\bin\java.dll
> 0x6D330000 - 0x6D33D000 c:\j2sdk1.4.1\jre\bin\zip.dll
> 0x6D2E0000 - 0x6D2EE000 C:\j2sdk1.4.1\jre\bin\net.dll
> 0x75050000 - 0x75058000 C:\WINNT\System32\WSOCK32.dll
> 0x75030000 - 0x75043000 C:\WINNT\System32\WS2_32.DLL
> 0x75020000 - 0x75028000 C:\WINNT\System32\WS2HELP.DLL
> 0x74FD0000 - 0x74FED000 C:\WINNT\system32\msafd.dll
> 0x75010000 - 0x75017000 C:\WINNT\System32\wshtcpip.dll
> 0x782C0000 - 0x782CC000 C:\WINNT\System32\rnr20.dll
> 0x77980000 - 0x779A4000 C:\WINNT\System32\DNSAPI.DLL
> 0x77340000 - 0x77353000 C:\WINNT\System32\iphlpapi.dll
> 0x77520000 - 0x77525000 C:\WINNT\System32\ICMP.DLL
> 0x77320000 - 0x77337000 C:\WINNT\System32\MPRAPI.DLL
> 0x75150000 - 0x75160000 C:\WINNT\System32\SAMLIB.DLL
> 0x75170000 - 0x751BF000 C:\WINNT\System32\NETAPI32.DLL
> 0x77BE0000 - 0x77BEF000 C:\WINNT\System32\Secur32.dll
> 0x751C0000 - 0x751C6000 C:\WINNT\System32\NETRAP.dll
> 0x77950000 - 0x77978000 C:\WINNT\system32\WLDAP32.dll
> 0x77A50000 - 0x77B3C000 C:\WINNT\system32\OLE32.DLL
> 0x779B0000 - 0x77A4B000 C:\WINNT\system32\OLEAUT32.DLL
> 0x773B0000 - 0x773DE000 C:\WINNT\System32\ACTIVEDS.DLL
> 0x77380000 - 0x773A2000 C:\WINNT\System32\ADSLDPC.DLL
> 0x77830000 - 0x7783E000 C:\WINNT\System32\RTUTILS.DLL
> 0x77880000 - 0x7790D000 C:\WINNT\System32\SETUPAPI.DLL
> 0x77C10000 - 0x77C6D000 C:\WINNT\System32\USERENV.DLL
> 0x774E0000 - 0x77512000 C:\WINNT\System32\RASAPI32.DLL
> 0x774C0000 - 0x774D1000 C:\WINNT\System32\RASMAN.DLL
> 0x77530000 - 0x77552000 C:\WINNT\System32\TAPI32.DLL
> 0x77B50000 - 0x77BD9000 C:\WINNT\system32\COMCTL32.DLL
> 0x77C70000 - 0x77CBA000 C:\WINNT\system32\SHLWAPI.DLL
> 0x77360000 - 0x77379000 C:\WINNT\System32\DHCPCSVC.DLL
> 0x777E0000 - 0x777E8000 C:\WINNT\System32\winrnr.dll
> 0x777F0000 - 0x777F5000 C:\WINNT\System32\rasadhlp.dll
> 0x77920000 - 0x77943000 C:\WINNT\system32\imagehlp.dll
> 0x72A00000 - 0x72A2D000 C:\WINNT\system32\DBGHELP.dll
> 0x690A0000 - 0x690AB000 C:\WINNT\System32\PSAPI.DLL
>
> Local Time = Thu Oct 02 17:00:58 2003
> Elapsed Time = 95934
> #
> # HotSpot Virtual Machine Error : EXCEPTION_ACCESS_VIOLATION
> # Error ID : 4F530E43505002E6
> # Please report this error at
> # http://java.sun.com/cgi-bin/bugreport.cgi
> #
> # Java VM: Java HotSpot(TM) Server VM (1.4.1_05-b01 mixed mode)
> #
> # An error report file has been saved as hs_err_pid2688.log.
> # Please refer to the file for further information.
> #
>
> E:\NCS>
>
>
>
> To unsubscribe from this group, send an email to:
> Firebird-Java-unsubscribe@yahoogroups.com
>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
>
>
>
>
>
> To unsubscribe from this group, send an email to:
> Firebird-Java-unsubscribe@yahoogroups.com
>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
>
>


To unsubscribe from this group, send an email to:
Firebird-Java-unsubscribe@yahoogroups.com



Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/



Yahoo! Groups Sponsor
ADVERTISEMENT




To unsubscribe from this group, send an email to:
Firebird-Java-unsubscribe@yahoogroups.com



Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.