DB2 - Problembeschreibung
Problem IC99202 | Status: Geschlossen |
ADO.NET DB2 PROVIDER - ACCESSVIOLATIONEXCEPTION ISSUE WHEN PERFORMING ARRAY INSERT OF LARGE BINARY VALUES ON A BLOB COLUMN. | |
Produkt: | |
DB2 CONNECT / DB2CONNCT / A10 - DB2 | |
Problembeschreibung: | |
ADO.NET application is getting AccessViolationException when performing a batch insert of large binary values in a table that contains a BLOB column. The batch insert is performed by setting the "ArrayBindCount" property on the DB2Command instance. The application throw AccessVoilationException when inserting 200 rows of binary data in a table using array insert. One of the column in this table is a BLOB and size of largest BLOB data in binary file is 1417522 byte. So, the size of application array to hold this 200 rows of data is 1417522 x 200 > 2GB. The dot.net driver crashes while accessing the row number 146 of such big array with access violation exception. The memory address of 146th row is going beyond 2GB and hence it application buffer pointer gets some invalid address. Using windbg too, got below stack trace for this issue: ================================== 00000000`0e80a0a8 000007fe`f60d8111 : 00000000`0cb80728 00000000`00000000 00000000`00000002 000007fe`f5fe8a8f : db2app64!_intel_new_memcpy+0x69 00000000`0e80a0b0 000007fe`f5fcfbe9 : 000007fe`00000000 00000000`0000146c 00000000`0000000a 00000000`04b804b0 : db2app64!CLI_callbDrdaInputLob+0xeb1 [T:\db2_v101fp3\ntx64\s130717\engn\include\clientbiconvlob.h @ 934] 00000000`0e80a370 000007fe`f5f9f2f7 : 00000000`00000000 000007fe`00000000 00000000`0e6d0000 00000000`0e6d3808 : db2app64!sqljrGenAllExtDtas+0x149 [T:\db2_v101fp3\ntx64\s130717\engn\sqjr\sqljrbni.C @ 1054] 00000000`0e80a420 000007fe`f62994d3 : 000007fe`f6709c3c 00000000`0000124c 00000000`000000c8 00000000`0d1d0001 : db2app64!sqljrDrdaArArrayInput+0x277 [T:\db2_v101fp3\ntx64\s130717\engn\sqjr\sqljrintrfc.C @ 4198] 00000000`0e80a4b0 000007fe`f614ac5b : 00000000`00000904 00000000`00000904 00000000`00000001 00000000`0c86bfe0 : db2app64!CLI_sqlExecute+0x10d3 [T:\db2_v101fp3\ntx64\s130717\engn\cli\clisql.C @ 5147] 00000000`0e80a5b0 000007fe`f613e7a2 : 00000000`000004b8 00000000`0d1def80 00000000`00000000 00000003`801c1340 : db2app64!CLI_execRetryExecute+0x7cb [T:\db2_v101fp3\ntx64\s130717\engn\cli\cliexec.C @ 11055] 00000000`0e80ab10 000007fe`f62aed25 : 00000000`0e80abd0 00000004`00010001 00000000`0000006b 000007fe`00000000 : db2app64!SQLExecute2+0xa62 [T:\db2_v101fp3\ntx64\s130717\engn\cli\cliexec.C @ 9892] 00000000`0e80ac30 000007fe`85fbc0a8 : 000007fe`85d2d2a0 000007fe`85f6d440 00000000`0e80b348 00000003`801bc930 : db2app64!SQLExecDirectADONET+0x1965 [T:\db2_v101fp3\ntx64\s130717\engn\cli\cliadonet.C @ 2066] | |
Problem-Zusammenfassung: | |
**************************************************************** * USERS AFFECTED: * * C client users using array insert with total size of array * * for all the rows exceeding 4byte int length. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 V10.1FP4 or later releases. * **************************************************************** | |
Local-Fix: | |
verfügbare FixPacks: | |
DB2 Version 10.1 Fix Pack 4 for Linux, UNIX, and Windows | |
Lösung | |
DB2 V10.1FP4 contains fix of this issue. After the fix, we don't see any accessviolationacception. The application is able to insert all the rows. | |
Workaround | |
keiner bekannt / siehe Local-Fix | |
Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 06.02.2014 03.06.2014 03.06.2014 |
Problem behoben ab folgender Versionen (IBM BugInfos) | |
Problem behoben lt. FixList in der Version | |
10.1.0.4 |