I am getting error
Unhandled exception at 0x77106214 in java.exe: 0xC0000374: A heap has been corrupted
On long running of application in server tomcat 8, java 8. In the application I am connecting SAPB1 with JCO library. It work well for some time, but after couple of hours JVM get crashed and getting an error as mentioned above. My code was made from this helpful reference. And in the application I am using a sync application(scheduled job) to get data from SAPB1. From the error It seems like there is an error while using JNI, that error is propagated back to JVM hence it get crashed.
Used JcoQuery is mentioned below
SELECT DocEntry, DocNum, CardName, CardCode, docTotal, UpdateTS, UpdateDate, DocDate, Comments, DocStatus, DocDueDate, ReceiptNum FROM OPOR WHERE ObjType=22 AND convert (datetime,(SELECT CONVERT(DATETIME, CONVERT(CHAR(8), UpdateDate, 112) + ' ' + CONVERT(CHAR(8), (SELECT CAST(LEFT(RIGHT('000000' + CAST(UpdateTS AS VARCHAR), 6), 2) + ':' + RIGHT(LEFT(RIGHT('000000' + CAST(UpdateTS AS VARCHAR), 6), 4), 2) + ':' + RIGHT('000000' + CAST(UpdateTS AS VARCHAR), 2) AS TIME)), 108)))) > convert (datetime,(SELECT CONVERT(DATETIME, CONVERT(CHAR(8), CAST('2018-10-19 15:11:00.60' AS DATE), 112) + ' ' + CONVERT(CHAR(8), (SELECT CAST(LEFT(RIGHT('000000' + CAST('1233' AS VARCHAR), 6), 2) + ':' + RIGHT(LEFT(RIGHT('000000' + CAST('1233' AS VARCHAR), 6), 4), 2) + ':' + RIGHT('000000' + CAST('1233' AS VARCHAR), 2) AS TIME)), 108)))) ORDER BY DocNum
Used code is given below
private <T> List<T> getData(Class<T> klazz, ICompany company, JcoQuery jcoQuery) throws Exception {
IRecordset recordSet = null;
List<T> result = new ArrayList<T>();
try {
recordSet = SBOCOMUtil.newRecordset(company);
String query = jcoQuery.getQuery();
System.out.println("Query : "+query);
List<String> fieldNameList = jcoQuery.getResultFieldList();
recordSet.doQuery(query);
int index = recordSet.getRecordCount();
// print out column names first - CardCode(item 0) and CardName(item 1)
System.out.println(recordSet.getFields().item(0).getName() + ":" +recordSet.getFields().item(0).getValue()
+ "\t\t"
+ recordSet.getFields().item(1).getName() + ":" + recordSet.getFields().item(1).getValue()
);
recordSet.moveFirst();
// iterate through all rows
for (int i = 0; i < index; i++) {
result.add(setObject(klazz, fieldNameList, recordSet));
recordSet.moveNext();
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
try {
recordSet.release();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
Error is as mentioned in this link
Stack: [0x15810000,0x15860000], sp=0x1585d858, free space=310k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x41f49]
C [ntdll.dll+0x41d6a]
C [sbojni.dll+0xa465]
C [sbojni.dll+0x1b31]
C [sbojni.dll+0x1e99]
J 5321 com.sap.smb.sbo.wrapper.com.Dispatch.invokev(Ljava/lang/Object;Ljava/lang/String;III[Lcom/sap/smb/sbo/wrapper/com/Variant;[I)Lcom/sap/smb/sbo/wrapper/com/Variant; (0 bytes) @ 0x027aa54c [0x027aa460+0xec]
J 5320 C1 com.sap.smb.sbo.wrapper.com.Dispatch.invokev(Ljava/lang/Object;Ljava/lang/String;I[Lcom/sap/smb/sbo/wrapper/com/Variant;[I)Lcom/sap/smb/sbo/wrapper/com/Variant; (31 bytes) @ 0x0263f1c8 [0x0263f160+0x68]
j com.sap.smb.sbo.wrapper.com.Dispatch.get(Ljava/lang/Object;Ljava/lang/String;)Lcom/sap/smb/sbo/wrapper/com/Variant;+10
j com.sap.smb.sbo.api.Company.getCompanyName()Ljava/lang/String;+6
j com.gtl.app.sapb1.adapter.sabpb1.connection.JcoCompanyConnector.connect()Z+246
j com.gtl.app.sapb1.adapter.sabpb1.connection.JcoDataFetcher.getData(Ljava/lang/Class;Lcom/gtl/app/sapb1/adapter/sabpb1/query/JcoQuery;)Ljava/util/List;+6
j com.gtl.app.sapb1.adapter.service.impl.PurchaseOrderServiceImpl.getPurchaseOrderList(Lcom/gtl/app/erp/api/service/request/GetPurchaseOrderListRequest;)Lcom/gtl/app/erp/api/service/response/GetPurchaseOrderListResponse;+63
j com.gtl.app.sapb1.adapter.controller.PurchaseOrderController.getPurchaseOrderList(Lcom/gtl/app/erp/api/service/request/GetPurchaseOrderListRequest;)Lorg/springframework/http/ResponseEntity;+5
j sun.reflect.GeneratedMethodAccessor92.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40
J 204 C1 sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (10 bytes) @ 0x02680bc0 [0x02680b90+0x30]
Internal exceptions (10 events):
Event: 60835.818 Thread 0x11bf7000 Exception <a 'com/sap/smb/sbo/wrapper/com/ComFailException'> (0x0468e300) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\prims\jni.cpp, line 709]
Event: 62479.265 Thread 0x11bf7000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': -1> (0x04deef38) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 62479.265 Thread 0x11bf7000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': -1> (0x04def158) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 62479.630 Thread 0x11bf3c00 Exception <a 'java/io/IOException'> (0x046e8660) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\prims\jni.cpp, line 709]
Event: 66178.572 Thread 0x24ddd800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 83> (0x05d6cc80) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 66178.583 Thread 0x24ddd800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 31> (0x05d97808) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 66178.585 Thread 0x24ddd800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 60> (0x05d9f518) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 66178.586 Thread 0x24ddd800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 88> (0x05da1608) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 66178.588 Thread 0x24ddd800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException': 31> (0x05db1a70) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\interpreter\interpreterRuntime.cpp, line 366]
Event: 66392.516 Thread 0x132bf400 Exception <a 'com/sap/smb/sbo/wrapper/com/ComFailException'> (0x0497bc30) thrown at [C:\re\workspace\8-2-build-windows-i586-cygwin\jdk8u172\10810\hotspot\src\share\vm\prims\jni.cpp, line 709]
User contributions licensed under CC BY-SA 3.0