Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JVM crash "C [bridj.dll+0x17c7a]" #97

Open
maryangelica opened this issue Jul 25, 2017 · 0 comments
Open

JVM crash "C [bridj.dll+0x17c7a]" #97

maryangelica opened this issue Jul 25, 2017 · 0 comments

Comments

@maryangelica
Copy link

Hi guys,

I am using this library to use communicate with a DLL, I don't have the source code, I just have the example about how is called this dll using Visual Basic, here the declaration in Visual Basic:

Declare Function fiOpenPort Lib "pinpadbox.dll" (ByRef ConfigFileName As String) As Short
Declare Function fiClosePort Lib "pinpadbox.dll" () As Short
Declare Function fiStartOperation Lib "pinpadbox.dll" (ByRef pucTipoOperation As String, ByRef iTimeOut As Short, ByRef pucResponse As String) As Short
Declare Function fiGetStatus Lib "pinpadbox.dll" (ByRef sBuffer As String, ByVal SizeBuffer As Short) As Short

And with that in mind I created this header file:

#ifndef PINPADBOX_H_
#define PINPADBOX_H_
class __declspec(dllimport) PINPADBOX
{
public:
	PINPADBOX();          // Class Constructor
	~PINPADBOX();         // Class destructor
	short fiOpenPort(char**);   // Class function fiOpenPort
	short fiClosePort();   // Class function Subtract
	short fiStartOperation(char**,short*,char**);
	short fiGetStatus(char **,short);//I tested char & but no returns.
};
#endif /* PINPADBOX*/

I used JNAerator 0.13, the problem starts with the method fiGetStatus, because the first parameter a String by reference and each certain time update the value, sometimes I run the same lines of code and its run without problems, run again and the JVM crash showing problem on bridj.dll, this occurs at the moment the first variable returns with results. Here part of the code:

Pointer<Pointer<Byte>> getStatusPARAM1 = Pointer.pointerToCStrings("");
PINPADBOX box = new PINPADBOX();
short y2=0;
do{
 getStatusPARAM1.get().set(Byte.parseByte("0")); //I tested with getStatusPARAM1.pointerToCString("")/getStatusPARAM1.set(Pointer.pointerToCString(""));/without this line and the same error
y2 = box.fiGetStatus(getStatusPARAM1, Short.valueOf("512"));
if(y2 > 0){
for(int i=0;i<getStatusPARAM1.get().getByteBuffer(y2).remaining();i++){
String obtByte = String.valueOf((char)getStatusPARAM1.get().getByteBuffer(y2).get(i));
strBu.append(obtByte);												
}
if(strBu.lastIndexOf("C1")>0){						
		break;
}
}while(resultStartOper>=0);
getStatusPARAM1.release();

The hs_err_pid is:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x502a7c7a, pid=14540, tid=0x00005778

C [bridj.dll+0x17c7a]

Current thread (0x0013cc00): JavaThread "main" [_thread_in_native, id=22392, stack(0x00640000,0x00690000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000
Register to memory mapping:

EAX=0x00000000 is an unknown value
EBX={method} {0x14c31aec} 'fiGetStatus' '(JS)S' in 'pinpadbox/PINPADBOX'
ECX=0x00000000 is an unknown value
EDX=0x15080a98 is an unknown value

Stack: [0x00640000,0x00690000], sp=0x0068f474, free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [bridj.dll+0x17c7a]
C [bridj.dll+0x3f04]
C [bridj.dll+0x1a34]
C [bridj.dll+0xb903]
j pinpadbox.PINPADBOX.fiGetStatus(JS)S+0
j pinpadbox.PINPADBOX.fiGetStatus(Lorg/bridj/Pointer;S)S+6
j test.BridJCard.main([Ljava/lang/String;)V+380

Internal exceptions (10 events):
Event: 0.781 Thread 0x0013cc00 Exception <a 'java/lang/NoSuchMethodError': fiGetStatus> (0x04a53150) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\prims\jni.cpp, line 1613]
Event: 0.781 Thread 0x0013cc00 Exception <a 'java/lang/NoSuchMethodError': fiClosePort> (0x04a53398) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\prims\jni.cpp, line 1613]
Event: 0.795 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04ab9710) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.812 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b37ed8) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.813 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b39620) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.813 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b3b1e0) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.813 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b3c450) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.814 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b3eca0) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.814 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b40778) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
Event: 0.814 Thread 0x0013cc00 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x04b419c8) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u112\7884\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]

Could you get me some clue to resolve this? I guess at the moment to recover the data, doesn't match the size of the field.... but I'm not sure.

Thanks in advance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant