Subject Re: [Firebird-Java] JVM crashes from exception in JDBC driver
Author Kenneth Foo
Thanks guys...

Does seems to be some JVM problem...
I'll try with some other parameters and see if crash still occurs...


----- Original Message -----
From: "Robert DiFalco" <rdifalco@...>
To: <Firebird-Java@yahoogroups.com>
Sent: Friday, October 03, 2003 2:23 AM
Subject: RE: [Firebird-Java] JVM crashes from exception in JDBC driver


> 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.
>
>
> 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/
>
>