views:

59

answers:

1

Hello

I'm responsible for maintaining a java swing application. It used to run quite fine with java 1.4, but with the time we encountered more and more crashes of the JRE that made us upgrade to the JRE 1.6, which at least is still maintained by Sun.

With the JRE 1.6 we now encounter a different kind of problem, in the part displaying ECW image files thanks to JNI and the native dlls NCSEcw.dll, NCSUtil.dll and NCScnet.dll (which are produced by ERDAS and can be found here : http://www.erdas.com/Products/ERDASDownloads/tabid/192/CurrentID/2560/Default.aspx ).

Most of the time the problem is a freeze (probably a deadlock) but one or two times we had real crashes of the JRE, with the hs_err_pid message I copied below. It does not appear on all machines, and is not systematic on the concerned machines (though very frequent). Most of the concerned machines seem to be running Windows 2000 SP4, but it appeared also on some XP machines and I can't find the criterion which differentiates them.

Is there a difference in the way JNI calls the library that make it work with 1.4 and not with 1.6 ? I'm a bit lost, thanks for any clue.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x5ffa1049, pid=2196, tid=2244
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode windows-x86 )
# Problematic frame:
# C  [NCSEcw.dll+0x1049]
#
# 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.
#

---------------  T H R E A D  ---------------

Current thread (0x33893800):  JavaThread "Pool-1" [_thread_in_native, id=2244, stack(0x36580000,0x36680000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x00000000, EBX=0x38e681d0, ECX=0x3460ff88, EDX=0x0000019c
ESP=0x3667f6e0, EBP=0x00000000, ESI=0x00000004, EDI=0x00000000
EIP=0x5ffa1049, EFLAGS=0x00010206

Top of Stack: (sp=0x3667f6e0)
0x3667f6e0:   00000010 3460ffa0 3895e5a8 38e68248
0x3667f6f0:   00000000 40000000 00000004 00000001
0x3667f700:   00000000 5ffa109f 3460fea8 34600005
0x3667f710:   000005ea 3460ffa0 00000010 38e68ec8
0x3667f720:   3865dd98 38e682c0 00000001 38e68338
0x3667f730:   00000007 3a416e6c 3895feac 5ffa109f
0x3667f740:   3460fea8 34600006 00000bb5 38e68ec8
0x3667f750:   00000010 3895ffd0 3a415568 38e68338 

Instructions: (pc=0x5ffa1049)
0x5ffa1039:   ff 8b c7 be 04 00 00 00 8b 4b 04 8b 6b 08 03 c8
0x5ffa1049:   8b 2c 28 83 c0 04 8b 11 89 29 8b 4b 08 4e 89 54 


Stack: [0x36580000,0x36680000],  sp=0x3667f6e0,  free space=3fd3667f23ck
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [NCSEcw.dll+0x1049]

[error occurred during error reporting (printing native stack), id 0xc0000005]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.ermapper.ecw.JNCSFile.ECWReadImageRGBA([III)I+0
j  com.ermapper.ecw.JNCSFile.readImageRGBA([III)I+4
j  com.ermapper.ecw.JNCSRenderer.ecwReadImage(IIDDDD)Z+98
j  com.ermapper.ecw.JNCSRenderer.drawImage(Ljava/awt/Graphics;IIIIDDDDLjava/awt/image/ImageObserver;)V+39
j  com.esrifrance.moje.ecw.ECWLayer.drawAvecRenderer(Lcom/esri/mo2/map/dpy/DisplayArea;)V+286
j  com.esrifrance.moje.ecw.ECWLayer.drawWithinScale(Lcom/esri/mo2/map/dpy/DisplayArea;I)V+63
j  com.esri.mo2.map.dpy.BaseLayer.draw(Lcom/esri/mo2/map/dpy/DisplayArea;I)V+16
j  com.esri.mo2.map.dpy.BaseDisplayManager$d_.a(Lcom/esri/mo2/map/dpy/Layer;)V+18
j  com.esri.mo2.map.dpy.BaseDisplayManager$d_$a_.visiting(Lcom/esri/mo2/map/dpy/Layer;)Z+5
J  com.esri.mo2.map.dpy.BaseGroupLayer.a(Lcom/esri/mo2/map/dpy/LayerVisitor;ZI)V
J  com.esri.mo2.map.dpy.BaseGroupLayer.a(Lcom/esri/mo2/map/dpy/LayerVisitor;)V
j  com.esri.mo2.map.dpy.BaseGroupLayer.traverse(Lcom/esri/mo2/map/dpy/LayerVisitor;Z)V+37
j  com.esri.mo2.map.dpy.BaseDisplayManager$d_.m()V+15
j  com.esri.mo2.map.dpy.BaseDisplayManager$d_.run()V+49
j  com.esri.mo2.sys.tp.ThreadPool$a_.run()V+39
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x33855c00 JavaThread "RetrieveThread-31" [_thread_in_native, id=2236, stack(0x3c880000,0x3c980000)]
  0x34788400 JavaThread "Thread-17" [_thread_in_native, id=2120, stack(0x3b2a0000,0x3b3a0000)]
  0x34723c00 JavaThread "Image Animator 0" daemon [_thread_blocked, id=960, stack(0x3b1a0000,0x3b2a0000)]
  0x33892400 JavaThread "Timer-0" [_thread_blocked, id=1664, stack(0x38660000,0x38760000)]
  0x34796400 JavaThread "Swing-Shell" daemon [_thread_blocked, id=2500, stack(0x36990000,0x36a90000)]
  0x33894800 JavaThread "Pool-2" [_thread_blocked, id=2440, stack(0x36680000,0x36780000)]
=>0x33893800 JavaThread "Pool-1" [_thread_in_native, id=2244, stack(0x36580000,0x36680000)]
  0x342b5400 JavaThread "Pool-0" [_thread_blocked, id=612, stack(0x36480000,0x36580000)]
  0x34859400 JavaThread "Thread-6" daemon [_thread_in_native, id=2044, stack(0x36380000,0x36480000)]
  0x342e9800 JavaThread "DispatcherThread-4" [_thread_blocked, id=2232, stack(0x35680000,0x35780000)]
  0x346e5c00 JavaThread "TimerQueue" daemon [_thread_blocked, id=2004, stack(0x34c50000,0x34d50000)]
  0x346c5800 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=792, stack(0x34b50000,0x34c50000)]
  0x34208000 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2452, stack(0x344f0000,0x345f0000)]
  0x34230400 JavaThread "AWT-Shutdown" [_thread_blocked, id=744, stack(0x343f0000,0x344f0000)]
  0x34195800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=2180, stack(0x342f0000,0x343f0000)]
  0x33881000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2420, stack(0x33ef0000,0x33ff0000)]
  0x3387b400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2292, stack(0x33df0000,0x33ef0000)]
  0x33879c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=2020, stack(0x33cf0000,0x33df0000)]
  0x33878400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1404, stack(0x33bf0000,0x33cf0000)]
  0x33868400 JavaThread "Finalizer" daemon [_thread_blocked, id=2436, stack(0x33af0000,0x33bf0000)]
  0x33863800 JavaThread "Reference Handler" daemon [_thread_blocked, id=2404, stack(0x339f0000,0x33af0000)]
  0x00877400 JavaThread "main" [_thread_blocked, id=2280, stack(0x00030000,0x00130000)]

Other Threads:
  0x33860c00 VMThread [stack: 0x338f0000,0x339f0000] [id=2364]
  0x3388c000 WatcherThread [stack: 0x33ff0000,0x340f0000] [id=2384]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 53248K, used 13986K [0x02940000, 0x06300000, 0x117e0000)
  eden space 47360K,  29% used [0x02940000, 0x036e8818, 0x05780000)
  from space 5888K,   0% used [0x05780000, 0x05780000, 0x05d40000)
  to   space 5888K,   0% used [0x05d40000, 0x05d40000, 0x06300000)
 tenured generation   total 118120K, used 70871K [0x117e0000, 0x18b3a000, 0x2f540000)
   the space 118120K,  59% used [0x117e0000, 0x15d15df0, 0x15d15e00, 0x18b3a000)
 compacting perm gen  total 29696K, used 29522K [0x2f540000, 0x31240000, 0x33540000)
   the space 29696K,  99% used [0x2f540000, 0x31214ac8, 0x31214c00, 0x31240000)
No shared spaces configured.

Dynamic libraries:
0x00400000 - 0x00455000  C:\Program Files\Sipa2010\Sipa.exe
0x78460000 - 0x784e1000  C:\WINNT\system32\ntdll.dll
0x78ed0000 - 0x78f32000  C:\WINNT\system32\ADVAPI32.dll
0x77e70000 - 0x77f34000  C:\WINNT\system32\KERNEL32.DLL
0x770c0000 - 0x77131000  C:\WINNT\system32\RPCRT4.DLL
0x77e00000 - 0x77e65000  C:\WINNT\system32\USER32.dll
0x77f40000 - 0x77f7c000  C:\WINNT\system32\GDI32.DLL
0x77810000 - 0x77817000  C:\WINNT\system32\VERSION.dll
0x75950000 - 0x75956000  C:\WINNT\system32\LZ32.DLL
0x6d8b0000 - 0x6db47000  c:\program files\sipa2010\jre\bin\client\jvm.dll
0x77540000 - 0x77571000  C:\WINNT\system32\WINMM.dll
0x7c340000 - 0x7c396000  C:\WINNT\system32\MSVCR71.dll
0x6d860000 - 0x6d86c000  c:\program files\sipa2010\jre\bin\verify.dll
0x6d3e0000 - 0x6d3ff000  c:\program files\sipa2010\jre\bin\java.dll
0x6d340000 - 0x6d348000  c:\program files\sipa2010\jre\bin\hpi.dll
0x68ea0000 - 0x68eab000  C:\WINNT\system32\PSAPI.DLL
0x6d8a0000 - 0x6d8af000  c:\program files\sipa2010\jre\bin\zip.dll
0x6d0b0000 - 0x6d1fa000  C:\Program Files\Sipa2010\jre\bin\awt.dll
0x777f0000 - 0x7780e000  C:\WINNT\system32\WINSPOOL.DRV
0x793c0000 - 0x793d1000  C:\WINNT\system32\MPR.DLL
0x75e00000 - 0x75e1a000  C:\WINNT\system32\IMM32.dll
0x77a40000 - 0x77b37000  C:\WINNT\system32\ole32.dll
0x71710000 - 0x71794000  C:\WINNT\system32\COMCTL32.dll
0x6e350000 - 0x6e356000  C:\WINNT\system32\INDICDLL.dll
0x77580000 - 0x777cf000  C:\WINNT\system32\shell32.dll
0x77290000 - 0x772f6000  C:\WINNT\system32\SHLWAPI.DLL
0x78000000 - 0x78045000  C:\WINNT\system32\msvcrt.dll
0x6d2e0000 - 0x6d334000  C:\Program Files\Sipa2010\jre\bin\fontmanager.dll
0x6d6c0000 - 0x6d6d3000  C:\Program Files\Sipa2010\jre\bin\net.dll
0x74fb0000 - 0x74fc4000  C:\WINNT\system32\WS2_32.dll
0x74fa0000 - 0x74fa8000  C:\WINNT\system32\WS2HELP.DLL
0x6d6e0000 - 0x6d6e9000  C:\Program Files\Sipa2010\jre\bin\nio.dll
0x77830000 - 0x7783c000  C:\WINNT\System32\rnr20.dll
0x77970000 - 0x77994000  C:\WINNT\system32\DNSAPI.DLL
0x74fd0000 - 0x74fd9000  C:\WINNT\system32\WSOCK32.DLL
0x77310000 - 0x77323000  C:\WINNT\system32\iphlpapi.dll
0x774f0000 - 0x774f5000  C:\WINNT\system32\ICMP.DLL
0x34da0000 - 0x34db7000  C:\WINNT\system32\MPRAPI.DLL
0x750d0000 - 0x750df000  C:\WINNT\system32\SAMLIB.DLL
0x7ccc0000 - 0x7cd10000  C:\WINNT\system32\NETAPI32.DLL
0x78fb0000 - 0x78fbf000  C:\WINNT\system32\Secur32.dll
0x77be0000 - 0x77bf1000  C:\WINNT\system32\NTDSAPI.dll
0x77940000 - 0x7796b000  C:\WINNT\system32\WLDAP32.DLL
0x75140000 - 0x75146000  C:\WINNT\system32\NETRAP.dll
0x779a0000 - 0x77a3b000  C:\WINNT\system32\OLEAUT32.DLL
0x77380000 - 0x773b0000  C:\WINNT\system32\ACTIVEDS.DLL
0x77350000 - 0x77373000  C:\WINNT\system32\ADSLDPC.DLL
0x77820000 - 0x7782e000  C:\WINNT\system32\RTUTILS.DLL
0x783c0000 - 0x78451000  C:\WINNT\system32\SETUPAPI.DLL
0x78d20000 - 0x78d83000  C:\WINNT\system32\USERENV.DLL
0x774b0000 - 0x774e3000  C:\WINNT\system32\RASAPI32.DLL
0x77490000 - 0x774a1000  C:\WINNT\system32\RASMAN.DLL
0x77500000 - 0x77522000  C:\WINNT\system32\TAPI32.DLL
0x77330000 - 0x77349000  C:\WINNT\system32\DHCPCSVC.DLL
0x777d0000 - 0x777d8000  C:\WINNT\System32\winrnr.dll
0x66210000 - 0x66219000  C:\WINNT\system32\netware\NWWS2NDS.DLL
0x50d50000 - 0x50d98000  C:\WINNT\system32\NETWIN32.DLL
0x50d00000 - 0x50d15000  C:\WINNT\system32\CLNWIN32.DLL
0x50df0000 - 0x50e10000  C:\WINNT\system32\LOCWIN32.DLL
0x50db0000 - 0x50ddc000  C:\WINNT\system32\NCPWIN32.dll
0x66220000 - 0x6622c000  C:\WINNT\system32\netware\NWWS2SLP.DLL
0x66250000 - 0x66257000  C:\WINNT\system32\NWSRVLOC.dll
0x74f50000 - 0x74f6e000  C:\WINNT\system32\msafd.dll
0x74f90000 - 0x74f97000  C:\WINNT\System32\wshtcpip.dll
0x777e0000 - 0x777e5000  C:\WINNT\system32\rasadhlp.dll
0x6d250000 - 0x6d273000  C:\Program Files\Sipa2010\jre\bin\dcpr.dll
0x7ca00000 - 0x7ca23000  C:\WINNT\system32\rsaenh.dll
0x77410000 - 0x77489000  C:\WINNT\system32\CRYPT32.dll
0x77400000 - 0x77410000  C:\WINNT\system32\MSASN1.DLL
0x72c60000 - 0x72ce6000  C:\WINNT\system32\CLBCATQ.DLL
0x77840000 - 0x77880000  C:\WINNT\system32\cscui.dll
0x77090000 - 0x770b3000  C:\WINNT\system32\CSCDLL.DLL
0x76dc0000 - 0x76dd2000  C:\WINNT\system32\mydocs.dll
0x36cf0000 - 0x36e3a000  C:\WINNT\system32\SHDOCVW.DLL
0x71e40000 - 0x71e8d000  C:\WINNT\system32\docprop2.dll
0x6a6f0000 - 0x6a710000  C:\WINNT\system32\MSVFW32.DLL
0x747f0000 - 0x74806000  C:\WINNT\system32\AVIFIL32.DLL
0x773e0000 - 0x773f3000  C:\WINNT\system32\MSACM32.dll
0x6ff60000 - 0x6ff65000  C:\WINNT\system32\faxshell.dll
0x37250000 - 0x372ab000  C:\Program Files\Fichiers communs\Adobe\Acrobat\ActiveX\PDFShell.dll
0x78130000 - 0x781cb000  C:\WINNT\system32\MSVCR80.dll
0x750e0000 - 0x750ec000  C:\WINNT\System32\ntlanman.dll
0x75190000 - 0x751a5000  C:\WINNT\System32\NETUI0.DLL
0x75150000 - 0x75188000  C:\WINNT\System32\NETUI1.DLL
0x58200000 - 0x582d1000  C:\WINNT\system32\NOVNPNT.DLL
0x50d20000 - 0x50d4d000  C:\WINNT\system32\CALWIN32.DLL
0x50da0000 - 0x50dab000  C:\WINNT\system32\CLXWIN32.DLL
0x58300000 - 0x5833b000  C:\WINNT\system32\MAPBASE.dll
0x58380000 - 0x583be000  C:\WINNT\system32\NWSHLXNT.dll
0x6a400000 - 0x6a41c000  C:\WINNT\system32\NLS\FRANCAIS\MAPBASER.DLL
0x37500000 - 0x3751d000  C:\WINNT\system32\NLS\FRANCAIS\NWSHLXNR.DLL
0x37520000 - 0x37596000  C:\WINNT\system32\NLS\FRANCAIS\NOVNPNTR.DLL
0x375a0000 - 0x376a2000  C:\Program Files\Sipa2010\jre\bin\esri_jni_mrsid.dll
0x377c0000 - 0x37ac1000  C:\Program Files\Sipa2010\jre\bin\mlib_jai.dll
0x5ff80000 - 0x5ff98000  C:\Program Files\Sipa2010\jre\bin\NCSUtil.dll
0x77910000 - 0x77933000  C:\WINNT\system32\IMAGEHLP.dll
0x5ffd0000 - 0x5ffe4000  C:\Program Files\Sipa2010\jre\bin\NCScnet.dll
0x5ffa0000 - 0x5ffcc000  C:\Program Files\Sipa2010\jre\bin\NCSEcw.dll
0x69a00000 - 0x69a1d000  C:\WINNT\system32\NTMARTA.DLL
0x6d500000 - 0x6d524000  C:\Program Files\Sipa2010\jre\bin\jpeg.dll

VM Arguments:
jvm_args: -Xms150000000 -Xmx750000000 
java_command: 
Launcher Type: generic

Environment Variables:
CLASSPATH=C:\Program Files\Sipa2010\impression.jar;C:\Program Files\Sipa2010\lib\moje21\jsde90_sdkres.jar;C:\Program Files\Sipa2010\lib\fop\xml-apis.jar;C:\Program Files\Sipa2010\SIPA.jar;C:\Program Files\Sipa2010\lib\fop\fop.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21img.jar;C:\Program Files\Sipa2010\lib\log4j-1.2.7.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21rpf.jar;C:\Program Files\Sipa2010\lib\moje21\mlibwrapper_jai.jar;C:\Program Files\Sipa2010\lib\fop\xercesImpl-2.2.1.jar;C:\Program Files\Sipa2010\lib\MDateSelector.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21.jar;C:\Program Files\Sipa2010\lib\moje21\jsde90_sdk.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21res.jar;C:\Program Files\Sipa2010\lib\moje21\esri_xmlkit.jar;C:\Program Files\Sipa2010\lib\moje21\jai_codec.jar;C:\Program Files\Sipa2010\lib\moje21\jai_core.jar;C:\Program Files\Sipa2010\lib\moje21\jpe90_sdk.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21vpf.jar;C:\Program Files\Sipa2010\lib\fop\avalon-framework-cvs-20020806.jar;C:\Program Files\Sipa2010\lib\fop\batik.jar;C:\Program Files\Sipa2010\lib\classes12.jar;C:\Program Files\Sipa2010\lib\moje21\esri_mo21cad.jar;C:\Program Files\Sipa2010\lib\pdfbox-sword.jar;C:\Program Files\Sipa2010\lax.jar;C:\Program Files\Sipa2010\ecwermapperjni.jar;
PATH=C:\oracle\ora81\bin;C:\Program Files\Oracle\jre\1.1.7\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\WINNT\system32\nls;C:\WINNT\system32\nls\FRANCAIS;C:\Program Files\Novell\ZENworks
USERNAME=David
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 1, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 2000 Build 2195 Service Pack 4

CPU:total 2 (1 cores per cpu, 2 threads per core) family 15 model 4 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ht

Memory: 4k page, physical 1047020k(341768k free), swap 1719680k(1051752k free)

vm_info: Java HotSpot(TM) Client VM (16.3-b01) for windows-x86 JRE (1.6.0_20-b02), built on Apr 12 2010 13:52:23 by "java_re" with MS VC++ 7.1 (VS2003)

time: Fri Jun 18 10:33:04 2010
elapsed time: 59 seconds
A: 

Jon has a hint that could explain your JNI problems after changing the JRE. Recompilation of the native libraries would be a solution, according to his answer.

Andreas_D
Thanks. Yes i've seen this post, and noticed that both dlls are loaded, but they're loaded before the use and loading of the Ecw dlls, as soon as the application starts, so I don't really know if they have a relation with ecw dlls.Actually, I found out that : * jre1.4 loads msvcrt.dll and msvcr80.dll * jre1.6 loads msvcrt.dll, msvcr71.dll and msvcr80.dll, even with the smallest swing application I could create from scratch to test.So yes, I may try to recompile the dlls, but I'm not very confident on this solution and didn't yet start to do it.
Guillaume
you should definitely try recompiling your jni code.
tulskiy