DB2 - Problem description
Problem IC99200 | Status: Closed |
ADO.NET DB2 PROVIDER - ACCESSVIOLATIONEXCEPTION ISSUE WHEN PERFORMING ARRAY INSERT OF LARGE BINARY VALUES ON A BLOB COLUMN. | |
product: | |
DB2 CONNECT / DB2CONNCT / 970 - DB2 | |
Problem description: | |
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 Summary: | |
**************************************************************** * 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 V9.7FP10 or later releases. * **************************************************************** | |
Local Fix: | |
Solution | |
DB2 V9.7 FP10 contains fix of this issue. After the fix, we don't see any accessviolationacception. The application is able to insert all the rows. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 06.02.2014 11.11.2014 11.11.2014 |
Problem solved at the following versions (IBM BugInfos) | |
9.7.FP10 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.10 |