# Java Kinect CLNUI



## B00bietrap (21. Jun 2011)

(Sollte das Thema den richtigen Posting Ort verfehlt haben... bitte verschieben und nich böse sein)

Tudiluuu Mitprogrammierer

Ich arbeite momentan and Programmen, die sich mit WebCams und Kinect befassen.
Doch leider steh ich zur zeit irgendwie auf der Leitung...
Es handelt sich umF folgendes^^

Ich wollt mir mal n blick ins CLNIU verschaffen, welches nach einem anständigen Java Programm für Kinect aussieht. Die Methoden sind geordnet und auch einigermassen verständlich 
CLNUI

Habs soweit geschaddr alle .dll und .jar files ein zu binden ubd zu verstauen.
Soweit sogut....
Starte ich aber nun eines der bereitgestellten files ""CLNuiJFrame  App2""
erhalte ich folgenden Fehler:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x14254c5d, pid=3692, tid=3736
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [CLNUIDevice.dll+0x24c5d]
#
# An error report file with more information is saved as:
# E:\Prozess_Modul\Kinect\Kinect_Java\CLNuiJFrame\hs_err_pid3692.log
#
# If you would like to submit a bug report, please visit:
#   HotSpot Virtual Machine Error Reporting Page
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#


Hier bin ich mit meinem Latein am ende.... Weiss vill Jemand ne Lösung für dieses Problem?
Auf verlangen kann ich auch Quelltext posten... wollt den Post nich grad zum explodieren bringen.

greets B00bietrap


----------



## MiDniGG (21. Jun 2011)

# An error report file with more information is saved as:
# E:\Prozess_Modul\Kinect\Kinect_Java\CLNuiJFrame\hs_err_pid3692.log

Was steht da denn so drin???


----------



## B00bietrap (21. Jun 2011)

Naja.... n haufen einsen und nullen 
Es übersteigt mein bissle Java Wissen bei weitem 


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x14254c5d, pid=3692, tid=3736
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [CLNUIDevice.dll+0x24c5d]
#
# If you would like to submit a bug report, please visit:
#   HotSpot Virtual Machine Error Reporting Page
# 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 (0x002b7000):  JavaThread "main" [_thread_in_native, id=3736, stack(0x008c0000,0x00910000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x6f289551

Registers:
EAX=0x6f289551, EBX=0x00000000, ECX=0x0090f7f0, EDX=0x7c91e514
ESP=0x0090f81c, EBP=0x0090f81c, ESI=0x00000000, EDI=0x0090f8f0
EIP=0x14254c5d, EFLAGS=0x00010202

Top of Stack: (sp=0x0090f81c)
0x0090f81c:   0090f828 036acb77 00000000 0090f868
0x0090f82c:   036ac7c2 036ac5a0 0090f850 00000004
0x0090f83c:   00000001 0090faf4 14254c50 0090fb50
0x0090f84c:   002b7000 0090fa90 0090faf4 0090f890
0x0090f85c:   0090f8b0 0090f8b0 00000001 0090fad8
0x0090f86c:   036a4561 0090fa90 14254c50 0090faf4
0x0090f87c:   0090f890 0090f8b0 0090f8b4 00000020
0x0090f88c:   036a4220 0090f8f0 002b7000 0090fb58 

Instructions: (pc=0x14254c5d)
0x14254c4d:   cc cc cc 55 8b ec 8b 45 08 50 ff 15 90 10 23 14
0x14254c5d:   81 38 78 65 6c 41 74 04 32 c0 5d c3 8b c8 e8 40 


Stack: [0x008c0000,0x00910000],  sp=0x0090f81c,  free space=13e0090f350k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [CLNUIDevice.dll+0x24c5d]
C  [jna7799066943534047794.dll+0xcb77]
C  [jna7799066943534047794.dll+0xc7c2]
C  [jna7799066943534047794.dll+0x4561]
C  [jna7799066943534047794.dll+0x4d2e]
j  com.sun.jna.Function.invokeInt(I[Ljava/lang/ObjectI+0
j  com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+92
j  com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/MapLjava/lang/Object;+214
j  com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/ObjectLjava/lang/Object;+341
j  $Proxy0.StartNUICamera(Lcom/sun/jna/PointerZ+16
j  CLNUIJavaTest.App2.setup()V+111
j  CLNUIJavaTest.App2.main([Ljava/lang/StringV+0
v  ~StubRoutines::call_stub
V  [jvm.dll+0xf3a9c]
V  [jvm.dll+0x186591]
V  [jvm.dll+0xf3b1d]
V  [jvm.dll+0xfd365]
V  [jvm.dll+0x104fbd]
C  [java.exe+0x2155]
C  [java.exe+0x85b4]
C  [kernel32.dll+0xb729]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.sun.jna.Function.invokeInt(I[Ljava/lang/ObjectI+0
j  com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+92
j  com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/MapLjava/lang/Object;+214
j  com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/ObjectLjava/lang/Object;+341
j  $Proxy0.StartNUICamera(Lcom/sun/jna/PointerZ+16
j  CLNUIJavaTest.App2.setup()V+111
j  CLNUIJavaTest.App2.main([Ljava/lang/StringV+0
v  ~StubRoutines::call_stub

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

Java Threads: ( => current thread )
  0x02f44000 JavaThread "D3D Screen Updater" daemon [_thread_blocked, id=4060, stack(0x03540000,0x03590000)]
  0x02f00c00 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=3656, stack(0x034a0000,0x034f0000)]
  0x02bec400 JavaThread "AWT-Windows" daemon [_thread_in_native, id=920, stack(0x031b0000,0x03200000)]
  0x02beb800 JavaThread "AWT-Shutdown" [_thread_blocked, id=2796, stack(0x03160000,0x031b0000)]
  0x02be9800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3960, stack(0x03110000,0x03160000)]
  0x02b57800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1204, stack(0x02dd0000,0x02e20000)]
  0x02b52400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=720, stack(0x02d80000,0x02dd0000)]
  0x02b4fc00 JavaThread "Attach Listener" daemon [_thread_blocked, id=492, stack(0x02d30000,0x02d80000)]
  0x02b4e800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3896, stack(0x02ce0000,0x02d30000)]
  0x02b10800 JavaThread "Finalizer" daemon [_thread_blocked, id=668, stack(0x02c90000,0x02ce0000)]
  0x02b0bc00 JavaThread "Reference Handler" daemon [_thread_blocked, id=3892, stack(0x02c40000,0x02c90000)]
=>0x002b7000 JavaThread "main" [_thread_in_native, id=3736, stack(0x008c0000,0x00910000)]

Other Threads:
  0x02b0a400 VMThread [stack: 0x02bf0000,0x02c40000] [id=200]
  0x02b62400 WatcherThread [stack: 0x02e20000,0x02e70000] [id=3964]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 4928K, used 876K [0x229a0000, 0x22ef0000, 0x27ef0000)
  eden space 4416K,   9% used [0x229a0000, 0x22a0bc50, 0x22df0000)
  from space 512K,  87% used [0x22e70000, 0x22edf730, 0x22ef0000)
  to   space 512K,   0% used [0x22df0000, 0x22df0000, 0x22e70000)
 tenured generation   total 10944K, used 2400K [0x27ef0000, 0x289a0000, 0x329a0000)
   the space 10944K,  21% used [0x27ef0000, 0x28148020, 0x28148200, 0x289a0000)
 compacting perm gen  total 12288K, used 548K [0x329a0000, 0x335a0000, 0x369a0000)
   the space 12288K,   4% used [0x329a0000, 0x32a291a0, 0x32a29200, 0x335a0000)
    ro space 10240K,  54% used [0x369a0000, 0x36f1c510, 0x36f1c600, 0x373a0000)
    rw space 12288K,  55% used [0x373a0000, 0x37a3fb78, 0x37a3fc00, 0x37fa0000)

Dynamic libraries:
0x00400000 - 0x00424000 	C:\Programme\Java\jdk1.6.0_22\bin\java.exe
0x7c910000 - 0x7c9c9000 	C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c908000 	C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e4a000 	C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee3000 	C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 	C:\WINDOWS\system32\Secur32.dll
0x7c340000 - 0x7c396000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\msvcr71.dll
0x6d8a0000 - 0x6db47000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\client\jvm.dll
0x7e360000 - 0x7e3f1000 	C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 	C:\WINDOWS\system32\GDI32.dll
0x76af0000 - 0x76b1e000 	C:\WINDOWS\system32\WINMM.dll
0x76330000 - 0x7634d000 	C:\WINDOWS\system32\IMM32.DLL
0x6d850000 - 0x6d85c000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\verify.dll
0x6d3d0000 - 0x6d3ef000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\java.dll
0x6d330000 - 0x6d338000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\hpi.dll
0x76bb0000 - 0x76bbb000 	C:\WINDOWS\system32\PSAPI.DLL
0x6d890000 - 0x6d89f000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\zip.dll
0x6d0b0000 - 0x6d1fa000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\awt.dll
0x72f70000 - 0x72f96000 	C:\WINDOWS\system32\WINSPOOL.DRV
0x77be0000 - 0x77c38000 	C:\WINDOWS\system32\msvcrt.dll
0x774b0000 - 0x775ee000 	C:\WINDOWS\system32\ole32.dll
0x773a0000 - 0x774a3000 	C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202\COMCTL32.dll
0x77f40000 - 0x77fb6000 	C:\WINDOWS\system32\SHLWAPI.dll
0x5b0f0000 - 0x5b128000 	C:\WINDOWS\system32\uxtheme.dll
0x6d2e0000 - 0x6d32f000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\fontmanager.dll
0x10000000 - 0x10012000 	C:\Programme\RocketDock\RocketDock.dll
0x746a0000 - 0x746ec000 	C:\WINDOWS\system32\MSCTF.dll
0x75250000 - 0x7527e000 	C:\WINDOWS\system32\msctfime.ime
0x4fd50000 - 0x4fef6000 	C:\WINDOWS\system32\d3d9.dll
0x6de80000 - 0x6de86000 	C:\WINDOWS\system32\d3d8thk.dll
0x77bd0000 - 0x77bd8000 	C:\WINDOWS\system32\VERSION.dll
0x7e670000 - 0x7ee91000 	C:\WINDOWS\system32\shell32.dll
0x6d6b0000 - 0x6d6c3000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\net.dll
0x71a10000 - 0x71a27000 	C:\WINDOWS\system32\WS2_32.dll
0x71a00000 - 0x71a08000 	C:\WINDOWS\system32\WS2HELP.dll
0x6d6d0000 - 0x6d6d9000 	C:\Programme\Java\jdk1.6.0_22\jre\bin\nio.dll
0x68000000 - 0x68036000 	C:\WINDOWS\system32\rsaenh.dll
0x76620000 - 0x766d6000 	C:\WINDOWS\system32\USERENV.dll
0x597d0000 - 0x59825000 	C:\WINDOWS\system32\netapi32.dll
0x719b0000 - 0x719f0000 	C:\WINDOWS\System32\mswsock.dll
0x76ee0000 - 0x76f07000 	C:\WINDOWS\system32\DNSAPI.dll
0x76d20000 - 0x76d39000 	C:\WINDOWS\system32\iphlpapi.dll
0x76f70000 - 0x76f78000 	C:\WINDOWS\System32\winrnr.dll
0x76f20000 - 0x76f4d000 	C:\WINDOWS\system32\WLDAP32.dll
0x750f0000 - 0x7510e000 	C:\WINDOWS\system32\wshbth.dll
0x778f0000 - 0x779e4000 	C:\WINDOWS\system32\SETUPAPI.dll
0x76f80000 - 0x76f86000 	C:\WINDOWS\system32\rasadhlp.dll
0x036a0000 - 0x036f5000 	C:\Dokumente und Einstellungen\siegt5\Lokale Einstellungen\Temp\jna7799066943534047794.dll
0x14230000 - 0x1425b000 	E:\Prozess_Modul\Kinect\Kinect_Java\CLNuiJFrame\CLNUIDevice.dll
0x770f0000 - 0x7717b000 	C:\WINDOWS\system32\OLEAUT32.dll

VM Arguments:
jvm_args: -Dfile.encoding=UTF-8 
java_command: CLNUIJavaTest.App2
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=.;.;C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;
PATH=C:\Programme\Gemeinsame Dateien\Siemens\Sqlany;C:\Programme\Siemens\Step7\S7bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;"C:\Programme\PKWARE\pkzipc";"C:\Programme\Java\jdk1.6.0_22\bin";C:\Programme\Gemeinsame Dateien\Adobe\AGL;C:\Programme\Microsoft SQL Server\90\Tools\binn\;E:\Prozess_Modul\Kinect\Install\Bin;C:\Programme\OpenNI\bin;C:\Programme\PrimeSense\NITE\bin
USERNAME=siegt5
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 72 Stepping 2, AuthenticAMD



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

OS: Windows XP Build 2600 Service Pack 3

CPU:total 2 (2 cores per cpu, 1 threads per core) family 15 model 72 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext

Memory: 4k page, physical 2096036k(952088k free), swap 4035304k(2782720k free)

vm_info: Java HotSpot(TM) Client VM (17.1-b03) for windows-x86 JRE (1.6.0_22-b04), built on Sep 15 2010 00:56:36 by "java_re" with MS VC++ 7.1 (VS2003)

time: Tue Jun 21 10:58:39 2011
elapsed time: 0 seconds


----------



## Marco13 (21. Jun 2011)

Im allgemeinen kann so ein crash zwei Gründe haben:
1. Entweder ein Fehler in der CLNUI Bibliothek
2. Oder die CLNUI Bibliothek bietet Funktionen an, die der Benutzer (in diesem Fall du, bzw. der, der das Beispiel geschrieben hat) falsch verwenden kann (und das auch tut). Man kann bei JNI nicht immer alle Parameter so prüfen, dass garntiert ist, dass die native Methode keinen Fehler produziert (der sich dann in dieser Meldung äußert). 

In der Datei, die er da erwähnt ("hs_err_pid3692.log") sollten ein paar Infos stehen. In der ersten Hälfte steht u.A. so eine Art "Stack Trace", damit sollte man den Fehler zumindest etwas eingrenzen können.


----------



## Marco13 (21. Jun 2011)

Gleichzeitig... na gut  Dort wird JNA verwendet... da wird die Fehlersuche gleich um einiges schwieriger (JNA verwendet schwarze Magie, um die nativen Funktionen aufzurufen...). Der Fehler liegt hier aber nicht notwendigerweise direkt in der CLNUI-Bibliothek, sondern irgendwo im großen Bereich zwischen der Bibliothek und JNA...


----------



## Marco13 (21. Jun 2011)

Ein erster kurzer Blick auf den Source Code: In der CLNUI stehen hart verdrahtete Pfade zu DLLs :autsch: hast du die angepasst, bzw. passen die zu deiner Installation?


----------



## B00bietrap (21. Jun 2011)

DLLs... Also ich hab nur eine dll, die CLNUIDevice.dll
die hab ich in nen Ordner gekippt und den als WorkDirectory im netbeans angegeben.
Sicherheitshalber hab ich die dll auch ins System32 kopiert.
Hats noch mehr dlls die ich übersehen hab?


----------



## Marco13 (21. Jun 2011)

Wie gesagt, das war nur ein GANZ kurzer Blick, aber in der CLNUI.java steht am Anfang

```
public interface CLNUI extends Library
{
    //private PApplet parent;
    static boolean libraryLoaded = false;
    public static String libraryFilename = "CLNUIDevice.dll";    
    static String dllpathx32 = "C://Program Files (x86)//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";
    static String dllpathx64 = "C://Program Files//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";
```
(bei der CLNUI2.java ist's etwas anders, ich kann das jetzt nicht richtig einordnen (d.h .ob die Pfade wirklich verwendet werden und so...), aber ... es sollte zumindest ein Anlaß sein, eine Augenbraue hochzuziehen  )


----------



## B00bietrap (21. Jun 2011)

hmmmkay... die 2 Zeilen waren bei mir Auskommentiert.
Hab den Pfad mal nach Vorlage aktualisiert (bin nich sicher was die doppel /  sollen...)
Bin mir jetzt nich sicher ob die 2 überhaupt verwendet werden...


```
public interface CLNUI extends Library
{
    //private PApplet parent;
    static boolean libraryLoaded = false;
    public static String libraryFilename = "CLNUIDevice.dll";    
   // static String dllpathx32 = "C://Program Files (x86)//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";
   // static String dllpathx64 = "C://Program Files//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";
    static String dllpathx32 = "E://Prozess_Modul//Kinect//Kinect_Java//CLNUI//src//cl//nui//CLNUIDevice.dll";
    static String dllpathx64 = "E://Prozess_Modul//Kinect//Kinect_Java//CLNUI//src//cl//nui//CLNUIDevice.dll";

	CLNUI INSTANCE = (CLNUI)Native.loadLibrary( libraryFilename, CLNUI.class );
	//CLNUI INSTANCE = (CLNUI)Native.loadLibrary( dllpathx32, CLNUI.class );
	//CLNUI INSTANCE = (CLNUI)Native.loadLibrary((Platform.isWindows() ? dllpathx32 : "c"), CLNUI.class );
```


----------



## Marco13 (21. Jun 2011)

Hast du die "Version 2" von der Seite? (Nochmal, ich hab das ganze nicht getestet oder näher angesehen, war nur ein spontaner Tipp...)


----------



## B00bietrap (21. Jun 2011)

Ich hab die Version 2.... "a friendly wrapper" sah gut aus^^
So wie es aussieht wird immer nur einer der 3 Pfade verwendet... werd se mal durchtesten


..nah... ist nichts zu machen. werd morgen sonst mal die Version 1 testen. Melde mich dann wieder.
vielen dank für die Hilfe soweit 

Doch noch zeit gefunden.... 
Version 1 gestestet... passiert das selbe.
die dll hab ich im WorkDirectory angegeben, alle .jars geaddet

dllpathx32 und dllpathx64 werden nur un diesen 2 Zeilen verwendet... daher gehe ich der Annahme, dass diese nur optional sind.


```
static boolean libraryLoaded = false;
    static String libraryFilename = "CLNUIDevice.dll";    
    static String dllpathx32 = "C://Program Files (x86)//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";
    static String dllpathx64 = "C://Program Files//Code Laboratories//CL NUI Platform//SDK//Bin//CLNUIDevice.dll";

	CLNUI INSTANCE = (CLNUI)Native.loadLibrary(libraryFilename, CLNUI.class );
	//CLNUI INSTANCE = (CLNUI)Native.loadLibrary((Platform.isWindows() ? dllpathx32 : libraryFilename), CLNUI.class );
	//CLNUI INSTANCE = (CLNUI)Native.loadLibrary((Platform.isWindows() ? dllpathx32 : "c"), CLNUI.class );
```


----------



## B00bietrap (21. Jun 2011)

wäre es möglich, dass fehler auftreten, wenn das Programm mit Eclipe geschrieben wurde und ich es im NetBeans verwende?


----------



## Marco13 (21. Jun 2011)

Nö, damit hängt das nicht zusammen... Wahrscheinlicher ist, dass es irgendwelche Schwierigkeiten bei der Anbindung an die DLL gibt, aber welche genau das sein können, ist (zumindest für mich) schwer zu sagen ... Versionsunterschiede, Bugs in der nativen Bibliothek oder JNA oder sonstwo... sorry...


----------

