Volledige versie bekijken : Fout in programma (java)



carl
18 May 2009, 15:52
Hey,
Kzit met een vrij ernstige fout in men java programma. Normaal zou ik zeggen foutje, maar een exception acces violation ...
Anyway, het programma volgt hieronder. De error doet zich voor bij het aanspreken van de database(JDBC-ODBC) om een query uit te voeren (inserten lukt, query in sommige gevallen). In 2 van de gevallen gebeurt dus de error. Zou iemand me miss kunnen zeggen waar het aan ligt ? Als hij zich voordoet is het gedaan met de java VM :damn:
PS: voor extra code vraag je maar eens, en de smilies zijn dus ; ) aan mekaar :damn: niks aan te doen :p

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c90100b, pid=3580, tid=2916
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_11-b03 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x100b]
#

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

Current thread (0x0aca7628): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2916]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000018

Registers:
EAX=0x00000004, EBX=0x0711f808, ECX=0x7ffac000, EDX=0x00000004
ESP=0x0b0ef4e4, EBP=0x0b0ef4fc, ESI=0x00000000, EDI=0x0afc1348
EIP=0x7c90100b, EFLAGS=0x00010246

Top of Stack: (sp=0x0b0ef4e4)
0x0b0ef4e4: 746059fa 00000004 0afc136c 745d139f
0x0b0ef4f4: 0afc136c 0afc1348 0b0ef50c 745d2c5d
0x0b0ef504: 0afc136c 0aca76e8 0b0ef520 745d822b
0x0b0ef514: 0afc1348 74600000 00000000 0b0ef53c
0x0b0ef524: 745d9652 0afc1348 0b0ef55c 00000003
0x0b0ef534: 0acff760 0aca76e8 0b0ef554 6d3811da
0x0b0ef544: 0afc1348 0b0ef55c 0aca7628 0711f808
0x0b0ef554: 0b0ef58c 00a8832f 00000000 0b0ef5a8

Instructions: (pc=0x7c90100b)
0x7c900ffb: 00 00 00 00 00 64 8b 0d 18 00 00 00 8b 54 24 04
0x7c90100b: 83 7a 14 00 75 4f f0 ff 42 04 75 19 8b 41 24 89


Stack: [0x0b0b0000,0x0b0f0000), sp=0x0b0ef4e4, free space=253k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x100b]
C [ODBC32.dll+0x2c5d]
C [ODBC32.dll+0x822b]
C [ODBC32.dll+0x9652]
C [JdbcOdbc.dll+0x11da]
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J
V [jvm.dll+0xdf462]
V [jvm.dll+0x87079]
V [jvm.dll+0x86dd6]
V [jvm.dll+0xa1a14]
V [jvm.dll+0x110aa6]
V [jvm.dll+0x110a74]
C [MSVCRT.dll+0x2a3b0]
C [kernel32.dll+0xb713]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement(I I)Ljava/sql/Statement;+27
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement() Ljava/sql/Statement;+7
j Persistentie.DeelnemerMapper.geefDeelnemer(Ljava/lang/String;)LDomein/Deelnemer;+8
j Domein.DC.geefDeelnemer(Ljava/lang/String;)[Ljava/lang/String;+5
j GUI.Hoofdmenu$5.actionPerformed(Ljava/awt/event/ActionEvent;)V+28
j javax.swing.AbstractButton.fireActionPerformed(Lja va/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed (Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed (Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Ljava/awt/event/MouseEvent;)V+35
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
J java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V
J java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V
J java.awt.LightweightDispatcher.retargetMouseEvent( Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V
j java.awt.LightweightDispatcher.processMouseEvent(L java/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
J java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V
v ~RuntimeStub::alignment_frame_return Runtime1 stub
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
J java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V
J java.awt.EventDispatchThread.pumpOneEventForHierar chy(ILjava/awt/Component;)Z
v ~RuntimeStub::alignment_frame_return Runtime1 stub
j java.awt.EventDispatchThread.pumpEventsForHierarch y(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

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

Java Threads: ( => current thread )
0x0acdabb0 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=2420]
0x0acfc958 JavaThread "TimerQueue" daemon [_thread_blocked, id=3888]
0x00365e20 JavaThread "DestroyJavaVM" [_thread_blocked, id=1948]
=>0x0aca7628 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2916]
0x0ac710e0 JavaThread "AWT-Windows" daemon [_thread_in_native, id=596]
0x0ac70d08 JavaThread "AWT-Shutdown" [_thread_blocked, id=3176]
0x0ac6b458 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3844]
0x00a445c0 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3224]
0x00a431c0 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3500]
0x00a425d0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2380]
0x00a39528 JavaThread "Finalizer" daemon [_thread_blocked, id=3856]
0x00a380b8 JavaThread "Reference Handler" daemon [_thread_blocked, id=708]

Other Threads:
0x009f7f40 VMThread [id=500]
0x00a45818 WatcherThread [id=3092]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation total 576K, used 429K [0x02a80000, 0x02b20000, 0x02f60000)
eden space 512K, 79% used [0x02a80000, 0x02ae5c20, 0x02b00000)
from space 64K, 35% used [0x02b00000, 0x02b05b98, 0x02b10000)
to space 64K, 0% used [0x02b10000, 0x02b10000, 0x02b20000)
tenured generation total 1408K, used 1167K [0x02f60000, 0x030c0000, 0x06a80000)
the space 1408K, 82% used [0x02f60000, 0x03083cf0, 0x03083e00, 0x030c0000)
compacting perm gen total 8192K, used 7089K [0x06a80000, 0x07280000, 0x0aa80000)
the space 8192K, 86% used [0x06a80000, 0x0716c5e8, 0x0716c600, 0x07280000)
No shared spaces configured.

Dynamic libraries:
0x00400000 - 0x0040d000 C:\Borland\Together\eclipse\jre\bin\javaw.exe
0x7c900000 - 0x7c9b5000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c900000 C:\WINDOWS\system32\kernel32.dll
0x77f40000 - 0x77feb000 C:\WINDOWS\system32\ADVAPI32.dll
0x77da0000 - 0x77e32000 C:\WINDOWS\system32\RPCRT4.dll
0x77f10000 - 0x77f21000 C:\WINDOWS\system32\Secur32.dll
0x7e390000 - 0x7e421000 C:\WINDOWS\system32\USER32.dll
0x77e40000 - 0x77e89000 C:\WINDOWS\system32\GDI32.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\MSVCRT.dll
0x76330000 - 0x7634d000 C:\WINDOWS\system32\IMM32.DLL
0x6d640000 - 0x6d7dd000 C:\Borland\Together\eclipse\jre\bin\client\jvm.dll
0x76af0000 - 0x76b1e000 C:\WINDOWS\system32\WINMM.dll
0x6d290000 - 0x6d298000 C:\Borland\Together\eclipse\jre\bin\hpi.dll
0x76bb0000 - 0x76bbb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d610000 - 0x6d61c000 C:\Borland\Together\eclipse\jre\bin\verify.dll
0x6d310000 - 0x6d32d000 C:\Borland\Together\eclipse\jre\bin\java.dll
0x6d630000 - 0x6d63f000 C:\Borland\Together\eclipse\jre\bin\zip.dll
0x6d000000 - 0x6d16a000 C:\Borland\Together\eclipse\jre\bin\awt.dll
0x72f70000 - 0x72f96000 C:\WINDOWS\system32\WINSPOOL.DRV
0x774a0000 - 0x775dd000 C:\WINDOWS\system32\ole32.dll
0x5b190000 - 0x5b1c8000 C:\WINDOWS\system32\uxtheme.dll
0x736d0000 - 0x7371b000 C:\WINDOWS\system32\ddraw.dll
0x73b30000 - 0x73b36000 C:\WINDOWS\system32\DCIMAN32.dll
0x6d240000 - 0x6d290000 C:\Borland\Together\eclipse\jre\bin\fontmanager.dl l
0x746a0000 - 0x746ec000 C:\WINDOWS\system32\MSCTF.dll
0x75250000 - 0x7527e000 C:\WINDOWS\system32\msctfime.ime
0x7c9c0000 - 0x7d1e2000 C:\WINDOWS\system32\shell32.dll
0x77e90000 - 0x77f06000 C:\WINDOWS\system32\SHLWAPI.dll
0x77390000 - 0x77493000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x5d4e0000 - 0x5d57a000 C:\WINDOWS\system32\comctl32.dll
0x6d3d0000 - 0x6d3ef000 C:\Borland\Together\eclipse\jre\bin\jpeg.dll
0x6d4d0000 - 0x6d4e3000 C:\Borland\Together\eclipse\jre\bin\net.dll
0x71a30000 - 0x71a47000 C:\WINDOWS\system32\WS2_32.dll
0x71a20000 - 0x71a28000 C:\WINDOWS\system32\WS2HELP.dll
0x6d4f0000 - 0x6d4f9000 C:\Borland\Together\eclipse\jre\bin\nio.dll
0x6d380000 - 0x6d38d000 C:\Borland\Together\eclipse\jre\bin\JdbcOdbc.dll
0x745d0000 - 0x7460d000 C:\WINDOWS\system32\ODBC32.dll
0x76350000 - 0x7639a000 C:\WINDOWS\system32\comdlg32.dll
0x1f840000 - 0x1f858000 C:\WINDOWS\system32\odbcint.dll
0x770e0000 - 0x7716b000 C:\WINDOWS\system32\OLEAUT32.dll
0x6ff80000 - 0x6ff9b000 C:\WINDOWS\system32\odbccp32.dll
0x77bd0000 - 0x77bd8000 C:\WINDOWS\system32\VERSION.dll
0x76f90000 - 0x7700f000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77010000 - 0x770dd000 C:\WINDOWS\system32\COMRes.dll
0x1b800000 - 0x1b83a000 C:\WINDOWS\system32\msjtes40.dll
0x184d0000 - 0x184db000 C:\WINDOWS\system32\VBAJET32.DLL
0x188f0000 - 0x18952000 C:\WINDOWS\system32\expsrv.dll

VM Arguments:
java_command: GUI.StartUp
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Borland\Together\eclipse\jre\bin\client;C: \Borland\Together\eclipse\jre\bin;C:\WINDOWS\syste m32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
USERNAME=jeroen
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel



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

OS: Windows XP Build 2600 Service Pack 3

CPU:total 1 (cores per cpu 1, threads per core 1) family 6 model 7 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2

Memory: 4k page, physical 1048048k(302276k free), swap 3042036k(2413496k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_11-b03) for windows-x86, built on Dec 15 2006 01:16:12 by "java_re" with MS VC++ 6.0


[B]EN DE TWEEDE:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c90100b, pid=3484, tid=3780
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_11-b03 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x100b]
#

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

Current thread (0x0aca67d0): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3780]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000018

Registers:
EAX=0x00000004, EBX=0x07111268, ECX=0x7ffad000, EDX=0x00000004
ESP=0x0b0af5d0, EBP=0x0b0af5e8, ESI=0x00000000, EDI=0x0b1b1348
EIP=0x7c90100b, EFLAGS=0x00010246

Top of Stack: (sp=0x0b0af5d0)
0x0b0af5d0: 746059fa 00000004 0b1b136c 745d139f
0x0b0af5e0: 0b1b136c 0b1b1348 0b0af5f8 745d2c5d
0x0b0af5f0: 0b1b136c 0aca6890 0b0af60c 745d822b
0x0b0af600: 0b1b1348 74600000 00000000 0b0af628
0x0b0af610: 745d9652 0b1b1348 0b0af648 00000003
0x0b0af620: 0ad29a58 0aca6890 0b0af640 6d3811da
0x0b0af630: 0b1b1348 0b0af648 0aca67d0 07111268
0x0b0af640: 0b0af678 00a8832f 00000000 0b0af694

Instructions: (pc=0x7c90100b)
0x7c900ffb: 00 00 00 00 00 64 8b 0d 18 00 00 00 8b 54 24 04
0x7c90100b: 83 7a 14 00 75 4f f0 ff 42 04 75 19 8b 41 24 89


Stack: [0x0b070000,0x0b0b0000), sp=0x0b0af5d0, free space=253k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x100b]
C [ODBC32.dll+0x2c5d]
C [ODBC32.dll+0x822b]
C [ODBC32.dll+0x9652]
C [JdbcOdbc.dll+0x11da]
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;II)Ljava/sql/PreparedStatement;+55
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;)Ljava/sql/PreparedStatement;+8
j Persistentie.ToernooiMapper.geefNamen()[Ljava/lang/String;+10
j Domein.DC.Toerlijst()[Ljava/lang/String;+9
j GUI.Toernooilijst.initGUI()V+15
j GUI.Toernooilijst.<init>(Ljava/lang/String;)V+10
j GUI.Wachtwoordregistratie$1.actionPerformed(Ljava/awt/event/ActionEvent;)V+40
j javax.swing.AbstractButton.fireActionPerformed(Lja va/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed (Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed (Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Ljava/awt/event/MouseEvent;)V+35
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+517
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.LightweightDispatcher.retargetMouseEvent( Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+304
j java.awt.LightweightDispatcher.processMouseEvent(L java/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j java.awt.EventDispatchThread.pumpOneEventForHierar chy(ILjava/awt/Component;)Z+233
j java.awt.EventDispatchThread.pumpEventsForHierarch y(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub
V [jvm.dll+0x871a8]
V [jvm.dll+0xdf462]
V [jvm.dll+0x87079]
V [jvm.dll+0x86dd6]
V [jvm.dll+0xa1a14]
V [jvm.dll+0x110aa6]
V [jvm.dll+0x110a74]
C [MSVCRT.dll+0x2a3b0]
C [kernel32.dll+0xb713]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;II)Ljava/sql/PreparedStatement;+55
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;)Ljava/sql/PreparedStatement;+8
j Persistentie.ToernooiMapper.geefNamen()[Ljava/lang/String;+10
j Domein.DC.Toerlijst()[Ljava/lang/String;+9
j GUI.Toernooilijst.initGUI()V+15
j GUI.Toernooilijst.<init>(Ljava/lang/String;)V+10
j GUI.Wachtwoordregistratie$1.actionPerformed(Ljava/awt/event/ActionEvent;)V+40
j javax.swing.AbstractButton.fireActionPerformed(Lja va/awt/event/ActionEvent;)V+84
j javax.swing.AbstractButton$Handler.actionPerformed (Ljava/awt/event/ActionEvent;)V+5
j javax.swing.DefaultButtonModel.fireActionPerformed (Ljava/awt/event/ActionEvent;)V+35
j javax.swing.DefaultButtonModel.setPressed(Z)V+117
j javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Ljava/awt/event/MouseEvent;)V+35
j java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+517
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.LightweightDispatcher.retargetMouseEvent( Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+304
j java.awt.LightweightDispatcher.processMouseEvent(L java/awt/event/MouseEvent;)Z+139
j java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j java.awt.EventDispatchThread.pumpOneEventForHierar chy(ILjava/awt/Component;)Z+233
j java.awt.EventDispatchThread.pumpEventsForHierarch y(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

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

Java Threads: ( => current thread )
0x0ac79780 JavaThread "TimerQueue" daemon [_thread_blocked, id=1932]
0x00365e20 JavaThread "DestroyJavaVM" [_thread_blocked, id=1416]
=>0x0aca67d0 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3780]
0x0ac710d0 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2136]
0x0ac70cf8 JavaThread "AWT-Shutdown" [_thread_blocked, id=1552]
0x0ac6b480 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=2104]
0x00a445c0 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=4076]
0x00a431c0 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3916]
0x00a425d0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3088]
0x00a39528 JavaThread "Finalizer" daemon [_thread_blocked, id=3948]
0x00a380b8 JavaThread "Reference Handler" daemon [_thread_blocked, id=3908]

Other Threads:
0x009f7f40 VMThread [id=3588]
0x00a45818 WatcherThread [id=1156]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation total 576K, used 375K [0x02a80000, 0x02b20000, 0x02f60000)
eden space 512K, 63% used [0x02a80000, 0x02ad0e40, 0x02b00000)
from space 64K, 80% used [0x02b10000, 0x02b1cf48, 0x02b20000)
to space 64K, 0% used [0x02b00000, 0x02b00000, 0x02b10000)
tenured generation total 1408K, used 1033K [0x02f60000, 0x030c0000, 0x06a80000)
the space 1408K, 73% used [0x02f60000, 0x03062430, 0x03062600, 0x030c0000)
compacting perm gen total 8192K, used 7100K [0x06a80000, 0x07280000, 0x0aa80000)
the space 8192K, 86% used [0x06a80000, 0x0716f150, 0x0716f200, 0x07280000)
No shared spaces configured.

Dynamic libraries:
0x00400000 - 0x0040d000 C:\Borland\Together\eclipse\jre\bin\javaw.exe
0x7c900000 - 0x7c9b5000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c900000 C:\WINDOWS\system32\kernel32.dll
0x77f40000 - 0x77feb000 C:\WINDOWS\system32\ADVAPI32.dll
0x77da0000 - 0x77e32000 C:\WINDOWS\system32\RPCRT4.dll
0x77f10000 - 0x77f21000 C:\WINDOWS\system32\Secur32.dll
0x7e390000 - 0x7e421000 C:\WINDOWS\system32\USER32.dll
0x77e40000 - 0x77e89000 C:\WINDOWS\system32\GDI32.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\MSVCRT.dll
0x76330000 - 0x7634d000 C:\WINDOWS\system32\IMM32.DLL
0x6d640000 - 0x6d7dd000 C:\Borland\Together\eclipse\jre\bin\client\jvm.dll
0x76af0000 - 0x76b1e000 C:\WINDOWS\system32\WINMM.dll
0x6d290000 - 0x6d298000 C:\Borland\Together\eclipse\jre\bin\hpi.dll
0x76bb0000 - 0x76bbb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d610000 - 0x6d61c000 C:\Borland\Together\eclipse\jre\bin\verify.dll
0x6d310000 - 0x6d32d000 C:\Borland\Together\eclipse\jre\bin\java.dll
0x6d630000 - 0x6d63f000 C:\Borland\Together\eclipse\jre\bin\zip.dll
0x6d000000 - 0x6d16a000 C:\Borland\Together\eclipse\jre\bin\awt.dll
0x72f70000 - 0x72f96000 C:\WINDOWS\system32\WINSPOOL.DRV
0x774a0000 - 0x775dd000 C:\WINDOWS\system32\ole32.dll
0x5b190000 - 0x5b1c8000 C:\WINDOWS\system32\uxtheme.dll
0x736d0000 - 0x7371b000 C:\WINDOWS\system32\ddraw.dll
0x73b30000 - 0x73b36000 C:\WINDOWS\system32\DCIMAN32.dll
0x6d240000 - 0x6d290000 C:\Borland\Together\eclipse\jre\bin\fontmanager.dl l
0x746a0000 - 0x746ec000 C:\WINDOWS\system32\MSCTF.dll
0x75250000 - 0x7527e000 C:\WINDOWS\system32\msctfime.ime
0x7c9c0000 - 0x7d1e2000 C:\WINDOWS\system32\shell32.dll
0x77e90000 - 0x77f06000 C:\WINDOWS\system32\SHLWAPI.dll
0x77390000 - 0x77493000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x5d4e0000 - 0x5d57a000 C:\WINDOWS\system32\comctl32.dll
0x6d3d0000 - 0x6d3ef000 C:\Borland\Together\eclipse\jre\bin\jpeg.dll
0x6d4d0000 - 0x6d4e3000 C:\Borland\Together\eclipse\jre\bin\net.dll
0x71a30000 - 0x71a47000 C:\WINDOWS\system32\WS2_32.dll
0x71a20000 - 0x71a28000 C:\WINDOWS\system32\WS2HELP.dll
0x6d4f0000 - 0x6d4f9000 C:\Borland\Together\eclipse\jre\bin\nio.dll
0x6d380000 - 0x6d38d000 C:\Borland\Together\eclipse\jre\bin\JdbcOdbc.dll
0x745d0000 - 0x7460d000 C:\WINDOWS\system32\ODBC32.dll
0x76350000 - 0x7639a000 C:\WINDOWS\system32\comdlg32.dll
0x1f840000 - 0x1f858000 C:\WINDOWS\system32\odbcint.dll
0x770e0000 - 0x7716b000 C:\WINDOWS\system32\OLEAUT32.dll
0x6ff80000 - 0x6ff9b000 C:\WINDOWS\system32\odbccp32.dll
0x77bd0000 - 0x77bd8000 C:\WINDOWS\system32\VERSION.dll
0x76f90000 - 0x7700f000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77010000 - 0x770dd000 C:\WINDOWS\system32\COMRes.dll
0x1b800000 - 0x1b83a000 C:\WINDOWS\system32\msjtes40.dll
0x184d0000 - 0x184db000 C:\WINDOWS\system32\VBAJET32.DLL
0x188f0000 - 0x18952000 C:\WINDOWS\system32\expsrv.dll

VM Arguments:
java_command: GUI.StartUp
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Borland\Together\eclipse\jre\bin\client;C: \Borland\Together\eclipse\jre\bin;C:\WINDOWS\syste m32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
USERNAME=jeroen
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel



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

OS: Windows XP Build 2600 Service Pack 3

CPU:total 1 (cores per cpu 1, threads per core 1) family 6 model 7 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2

Memory: 4k page, physical 1048048k(307008k free), swap 3042036k(2417816k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_11-b03) for windows-x86, built on Dec 15 2006 01:16:12 by "java_re" with MS VC++ 6.0

ultddave
18 May 2009, 16:10
Maak je misschien gebruik ergens van conflicterende types. Een integer die eigenlijk een string moest zijn of iets dergelijks?

carl
18 May 2009, 16:16
Mmm, dat zou toch een compile error opleveren ??
Ah je bedoelt in SQL ? Kzalt keer goed nakijken.
edit: voor zover ik kan zien niet. Maar een van de twee blijkt nu wel opgelost te zijn ? Ksnap het ook niet echt goed ...
edit 2: de error blijkt zich enkel voor te doen wanneer ik voor de tweede keer in de database piek. De eerste keer werkt ie perfect (dus hetzelfde stukje werkt tweede keer niet).

De vermoedelijk foute code:


public Deelnemer geefDeelnemer(String email) {
Statement statement;
Connection connection = PersistentieController.getInstance().getConnection ();
try {
statement = connection.createStatement();
PreparedStatement prepSt = connection.prepareStatement("SELECT * FROM deelnemer WHERE email = ?");
prepSt.setString(1, email);
ResultSet resultSet = prepSt.executeQuery();
while (resultSet.next()) {
String voornaam = resultSet.getString("voornaam");
String achternaam = resultSet.getString("achternaam");
String straat = resultSet.getString("straat");
int huisnr = resultSet.getInt("huisnr");
int postcode = resultSet.getInt("postcode");
String woonplaats = resultSet.getString("woonplaats");
String land = resultSet.getString("land");
GregorianCalendar gebdatum = new GregorianCalendar();
gebdatum.setTime(resultSet.getDate("gebdatum"));
String wachtw = resultSet.getString("wachtwoord");
String mail = resultSet.getString("email");
Deelnemer deelnemer = new Deelnemer(voornaam, achternaam, gebdatum, straat, huisnr, postcode, woonplaats, land, wachtw, mail);
return deelnemer;

}
statement.close();
prepSt.close();
connection.close();
}
catch (SQLException e) {
e.printStackTrace();
}
return null;
}

ultddave
18 May 2009, 16:30
Je moet hier eens kijken;
http://www.google.be/search?q=instructions+0x7c90100b&hl=nl&start=0&sa=N

De foutmelding komt altijd voor bij "memory could not be read" errors.
Zitten er meerdere "programma's" of functies aan dat geheugen tegelijkertijd?
Of zit er misschien ergens een fout waardoor je buiten je gealloceerd geheugen zit te kijken ofzoiets?

Mvg,
Dave

carl
18 May 2009, 16:39
Ik ben niet zeker maar ik denk dat de fout als volgt is:
Wanneer de try block niet normaal wordt uitgevoer (bewust gedaan, foute naam ingegeven die niiet in db staat) genereert hij een SQLException: ongeldige cursorstatus. Dan springt hij meteen naar catch blok, waardoor connection.close() dus niet meer gebeurt ? Dus die connection zou dan blijven open staan zodat er bij aanmaak van een tweede connection een toegangserror gebeurt ?

ultddave
18 May 2009, 16:44
Ik heb alleen de basis van java gehad. Ben nu bezig met C :P.
Maar zoals je zegt blijft de connectie meestal open totdat je hem sluit/of het programma gesloten wordt. Dat kan dus hetzelfde effect geven alsdat 2 programma's 1 geheugenplaats aan het lezen/veranderen zijn.

Ik zou alleszins die connectie eens sluiten en kijken of de fout weg is.

Mvg,
Dave

EDIT: Anders ga je memory leaks krijgen op het einde als hij elke keer de connectie gaat openen zonder de vorige te sluiten. Dan staat je geheugen uiteindelijk vol en krijg je de "insufficient memory" error. Niet bepaald leuk bij een voorstelling van een project ofzo :D.

carl
18 May 2009, 16:50
maar het is nu net een project :) Het is wel al ingediend maar ik had de toestemming om deze error nog uit te zoeken omdat de docent er zelf kop nog staart aan kreeg.

PS
Ik heb de error gerepliceerd, het is wel degelijk door het foutief sluiten fzo van de connectie. Wat echter NIET werkt is connection.close() in het finally statement of catch zetten ? :s:s

carl
18 May 2009, 17:00
Bijvoorbeeld de volgende methode kan ik perfect eenmaal uitvoeren, maar bij de tweede maal exception.
public String[] geefNamen(){
try{
Connection conn = PersistentieController.getInstance().getConnection ();
PreparedStatement pStat = conn.prepareStatement("SELECT naam FROM tornooi");
ResultSet resul = pStat.executeQuery();
String[] uitvoer=new String[100];
int i =0;
while(resul.next()){
uitvoer[i]=resul.getString(1);
i++;
}
resul.close();
pStat.close();
conn.close();

return uitvoer;
}catch(SQLException e){
e.printStackTrace();
return null;
}
}

ultddave
18 May 2009, 17:08
De tweede keer, bij welke regel gebeurt de crash dan?
Deze: Connection conn = PersistentieController.getInstance().getConnection ();
?

Mvg,
Dave

carl
18 May 2009, 17:14
ik weet het niet juist, uit de errors kan ik het niet echt opmaken :s

ultddave
18 May 2009, 17:16
ik weet het niet juist, uit de errors kan ik het niet echt opmaken :s

Heeft Java geen lijn per lijn debugger? ;). Dan kan je direct zien welke lijn de error genereerd vermoed ik :D.

Ik heb gelezen (geen idee of het klopt) dat je eens moet proberen alle 'close' statements in the 'finally' block te zetten, en niet in de 'try'. Geen idee of dat enig effect gaat hebben :P.

Ik heb ook al wat meegemaakt :P. Functies die zichzelf zonder reden aanroepen zonder parameters en crashen en dergelijke. (Backtracking :cry:)

Mvg,
Dave

EDIT: Linux heeft een gdb (GNU debugger) voor Java programma's te debuggen normaal gezien.

http://gcc.gnu.org/java/gdb.html

De gdb werkt ook voor andere programmeertalen ofcourse. Ik gebruik hem voor 'C'.

carl
18 May 2009, 17:24
Ja er zit een lijn per lijn tracking, maar niet als de java VM crasht :D Die errors die daar staan zijn dus alles van info die ik krijg.
Van een test methode main gebeurt er dus bij eeen tweede keer uitvoeren het volgende:

Stack: [0x00030000,0x00070000), sp=0x0006f8e8, free space=254k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x100b]
C [ODBC32.dll+0x2c5d]
C [ODBC32.dll+0x822b]
C [ODBC32.dll+0x9652]
C [JdbcOdbc.dll+0x11da]
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;II)Ljava/sql/PreparedStatement;+55
j sun.jdbc.odbc.JdbcOdbcConnection.prepareStatement( Ljava/lang/String;)Ljava/sql/PreparedStatement;+8
j Persistentie.ToernooiMapper.geefNamen()[Ljava/lang/String;+10
j Persistentie.ToernooiMapper.main([Ljava/lang/String;)V+14

ultddave
18 May 2009, 17:32
Mmm dat is chinees voor mij :P.

Kan je eens iets proberen;
Kan je werken zonder die string array (Voor te testen of de error blijft), gewoon

public int geefNamen(){
try{
Connection conn = PersistentieController.getInstance().getConnection ();
PreparedStatement pStat = conn.prepareStatement("SELECT naam FROM tornooi");
ResultSet resul = pStat.executeQuery();

int uitvoer = 7;
}
resul.close();
pStat.close();
conn.close();

return uitvoer;
}catch(SQLException e){
e.printStackTrace();
return null;
}
}

Omdat ik zie "free space = 254k". Ik denk dat die string array te lang is?

Dus dat je elke keer een nieuwe string array gaat definïeren en dat je programma geheugen te klein is?

De eerste keer gaat nog, de tweede keer krijgt hij dat waarschijnlijk niet meer gealloceert?

Mvg,
Dave

PS: Ik denk maar mee :D. Maar een string neemt wel wat bytes in.

carl
18 May 2009, 17:52
De error blijft ook bij een integer.
Indien ik conn.ceatestatement() toevoeg geeft hij hierop een error de tweede keer. Dat doet me vermoeden dat er iets ad hand is met de connectie of de database driver.

carl
18 May 2009, 18:19
Ksnap er hoe langer hoe minder van. Volgende methode werkt wel, maar daar blijkt een infinity loop in te zitten ? De query gegevens worden opgeslagen in de database. Ik had hem ff late lopen en zat met 10 000 records ....... vreemd zenne.

ArrayList<Toernooi> toernooien = new ArrayList<Toernooi> ();
Statement statement;
Connection connection = PersistentieController.getInstance().getConnection ();
try {
statement = connection.createStatement();
PreparedStatement prepSt = connection.prepareStatement("SELECT * FROM tornooi");
ResultSet resultSet = prepSt.executeQuery();
while (resultSet.next()) {
JOptionPane.showMessageDialog(null, resultSet.getString(5));
}
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
return toernooien;

carl
18 May 2009, 18:28
Ik snap er officieel NIETS meer van ..
Volgend stuk code geeft dus geen error

String[] toernooien=new String[30];
Connection connection = PersistentieController.getInstance().getConnection ();
try {
PreparedStatement prepSt = connection.prepareStatement("SELECT naam FROM tornooi");
ResultSet resultSet = prepSt.executeQuery();
int i = 0;
while (resultSet.next()) {
toernooien[i]=resultSet.getString(1);i++;
}
} catch (SQLException e) {
e.printStackTrace();
}
return toernooien;

ultddave
18 May 2009, 18:32
Nu ja ik begrijp niet zoveel van die java code. Maar ik zie dat je bij dat voorbeeld bij die string array 3 dingen sluit en bij deze(post #15) maar 1? terwijl er ook ongeveer dezelfde dingen worden geopend? :D

Anders beginnen we bij het begin? :D

Schrijf een functie die niets returned. Gewoon waarin je elke keer de database opent en sluit. En roep deze functie een aantal keren op.




Connection connection = PersistentieController.getInstance().getConnection ();

connection.close();

Als dat gaat, is er alleszins niets mis met de database connecties.

Dan voeg je gewoon de volgende regels toe;



Connection connection = PersistentieController.getInstance().getConnection ();
PreparedStatement prepSt = connection.prepareStatement("SELECT * FROM tornooi");

prepSt.close();
connection.close();




Connection connection = PersistentieController.getInstance().getConnection ();
PreparedStatement prepSt = connection.prepareStatement("SELECT * FROM tornooi");
ResultSet resul = pStat.executeQuery();

resul.close();
prepSt.close();
connection.close();


En zo voeg je elke keer code bij, tot het fout loopt.


Als het bij


Connection connection = PersistentieController.getInstance().getConnection ();

connection.close();

fout loopt, dan zit de fout inderdaad bij de database connectie.

Mvg,
Dave

PS: Ik heb gelezen dat als je zaken in de database stopt (update) dat je moet bevestigen met een soort "commit" command.


Is het niet de bedoeling dat je code er als volgt uitziet:

try {
// probeer alle connecties //
}
catch {
// errorhandling //
}
finally {
// Het programma met return statement //
}

Als je return in je "try" staat, denkt de functie misschien dat er geen "catch" meer volgt? en daarom crashed bij een error? :)

Snakey
18 May 2009, 20:41
Bij excepties in een try, dan negeert hij alles na de lijn van de exceptie (ook returns die na deze lijn komen) en gaat hij direct naar het corresponderend catchblock (indien aanwezig), en dan pas in finally.

Deze code bevat echter specifieke code die dingen uit de database haalt, dus ik neem aan dat dit uit een data access klasse komt, dan is het beter om een exceptie te throwen, en de exceptie op een hogere orde afhandelen, dit verbetert de porteerbaarheid van uw code.

Normaalgezien moeten preparedStatements en dergelijke niet gesloten worden, ze zijn in diezelfde methode gedeclareerd en ze blijven toch maar leven totdat de methode ten einde is. Connectie wel, deze wordt opgehaald vanuit een andere instantie en moet daarom nog eens expliciet gesloten worden, tenzij je 1 enkele open verbinding per applicatie wenst.

Een voorbeeld van een methode die ik steeds hergebruik (met een fictieve MyObject(int,String) ):

public Vector<MyObject> getMyObjects() throws SQLException {
Vector<MyObject> myObjects = new Vector<MyObject>();

String sql = "SELECT * FROM myTable";

Connection conn = AccessDatabase.getInstance().getConnection(); //AccessDatabase || MySQLDatabase
PreparedStatement ps = conn.prepareStatement(sql);

//invoeren van parameters
//ps.setString(1, tekst);

//uitvoeren
ResultSet res = ps.executeQuery(); // select
//ps.executeUpdate(); //alter, insert, update & delete

while (res.next()) {
int id = res.getInt(1);
String name = res.getString(2);
MyObject myObject = new MyObject(id,name);
myObjects.add(myObject);
}
conn.close();
return myObjects;
}
Zet dan een try-catch wanneer je deze methode oproept.

De bijhorende AccessDatabase.java (http://pastebin.com/f6d0f23a3), indien je het wilt, maar je kan het ook zodanig aanpassen zodat het met uw bestaande klasse werkt.

carl
19 May 2009, 17:10
Bedankt voor jullie super tips ! ik heb een groot aantal grotere en kleinere fouten kunnen oplossen erdoor.
Hoe ik dus die acces violation heb 'opgelost':
alle Connection.close verwijderen
--> no more errors ??
Ik vind het zelf vreemd maar ze zijn weg, dus ja :)