DB2 - Problem description
Problem IC79479 | Status: Closed |
DECLARE GLOBAL TEMPORARY TABLE WITH REPLACE OPTION MIGHT CAUSE DOUBLE FREE IN XA ENVIRONMENT. | |
product: | |
DB2 FOR LUW / DB2FORLUW / 950 - DB2 | |
Problem description: | |
Issue fixed with APAR IC79479, under certain conditions (rollbacks of drops of DGTT is the main contributing factor) lead to situations that result in -901 sqlcodes from sqlrl_userTemp* logic. Secondarily, these bugs can result in applications accessing the DGTTs of other connections via incorrect package cache matches - which, aside from the -901s can also result in incorrect TCB counts when an application is attempting to drop a DGTT that it thinks it has exclusive access to. Furthermore, in XA connection, declare global temporary table WITH REPLACE option might cause double memory free. The fix for IC79479 has two main aspects: a) Fix to identified logical problems involving dropping of DGTTs b) Fix for DGTT design reducing the memory use of DGTTs which could accumulate significantly during a transaction To identify if you hit APAR IC79479, seek for following db2diag.log entries: 1. In XA connection, declare global temporary table WITH REPLACE option might cause double free as below: 2010-10-18-23.47.52.225880+120 I1182384A1848 LEVEL: Severe PID : 1421654 TID : 25962 PROC : db2sysc 0 INSTANCE: db2inst1 NODE : 000 DB : DBNAME APPHDL : 0-262 APPID: 192.168.1.1.4032.1010182147 AUTHID : INSTOWNER EDUID : 25962 EDUNAME: db2agent (DBNAME) 0 FUNCTION: DB2 UDB, SQO Memory Management, sqloDiagnoseFreeBlockFailure, probe:10 MESSAGE : Possible memory corruption detected. DATA #1 : ZRC, PD_TYPE_ZRC, 4 bytes 0x820F0002 DATA #2 : Corrupt block address, PD_TYPE_CORRUPT_BLK_PTR, 8 bytes 0x07000000e0208020 DATA #3 : Block header, PD_TYPE_BLK_HEADER, 24 bytes 0x07000000E0208008 : FAB0 7000 000E 0200 0000 0000 0000 0000 ..p............. 0x07000000E0208018 : 0700 0000 E020 80A8 ..... .. DATA #4 : Data header, PD_TYPE_BLK_DATA_HEAD, 48 bytes 0x07000000E0208020 : 0000 0000 0000 0040 0000 0000 0000 0000 .......@........ 0x07000000E0208030 : 0000 0010 0000 0D00 0000 0000 0000 0000 ................ 0x07000000E0208040 : 0100 0000 0000 0000 DB2C AFE8 0000 0038 .........,.....8 CALLSTCK: [0] 0x0900000012970948 pdLog + 0xD4 [1] 0x090000000F360D64 @79@sqloDiagnoseFreeBlockFailure__FP8SMemFBlk + 0x150 [2] 0x0900000012AC53FC sqlofmblkEx + 0x90 [3] 0x090000000EB15B78 sqlrl_userTempDrop__FP8sqlrr_cbP19sqlrl_userTempEntryPUciT3T4UsT 7T4 + 0xC30 [4] 0x0900000010D7F0B0 sqlrl_userTempDropAll__FP8sqlrr_cbP16sqlr_usertemp_cb + 0x1C4 [5] 0x0900000010D7E8A8 sqlrl_userTempDropAll__FP8sqlrr_cbP16sqlr_usertemp_cb@glueB8A + 0x74 [6] 0x09000000105F9AF8 sqlrr_cleanup_tran_before_DPS__FP8sqlrr_cbiN62PiT9b + 0x200 [7] 0x090000001270EA94 sqlrxend__FP8sqlrr_cbP15SQLXA_CALL_INFOi + 0x638 [8] 0x0900000012727868 sqlrr_xend__FP14db2UCinterface + 0x1D0 [9] 0x0900000010AC5D54 sqljsSyncEnd__FP14db2UCinterface + 0x5F8 2010-10-18-23.47.52.234609+120 I1184233A461 LEVEL: Severe PID : 1421654 TID : 25962 PROC : db2sysc 0 INSTANCE: db2inst1 NODE : 000 DB : DBNAME APPHDL : 0-262 APPID: 192.168.1.1.4032.1010182147 AUTHID : INSTOWNER EDUID : 25962 EDUNAME: db2agent (DBNAME) 0 FUNCTION: DB2 UDB, SQO Memory Management, sqloDiagnoseFreeBlockFailure, probe:30 DATA #1 : String, 12 bytes Double free. 2. In db2diag.log you can see following entries: 2011-10-26-10.38.43.975406+120 I25272923A530 LEVEL: Error PID : 32702658 TID : 28432 PROC : db2sysc 0 INSTANCE: db2inst11 NODE : 000 DB : DBNAME APPHDL : 0-60658 APPID: GA91083E.O12D.111026073339 AUTHID : INSTOWNER EDUID : 28432 EDUNAME: db2agent (DBNAME) 0 FUNCTION: DB2 UDB, catalog services, sqlrl_userTempIUD, probe:40 MESSAGE : entry not found tid = DATA #1 : Hexdump, 2 bytes 0x070000014AB35350 : 000F .. ==============> TID = 15 2011-10-26-10.38.43.975678+120 I25273454A530 LEVEL: Error PID : 32702658 TID : 28432 PROC : db2sysc 0 INSTANCE: db2inst11 NODE : 000 DB : DBNAME APPHDL : 0-60658 APPID: GA91083E.O12D.111026073339 AUTHID : INSTOWNER EDUID : 28432 EDUNAME: db2agent (DBNAME) 0 FUNCTION: DB2 UDB, catalog services, sqlrl_userTempIUD, probe:40 MESSAGE : entry not found fid = DATA #1 : Hexdump, 2 bytes 0x070000014AB35352 : 0008 .. ==============> FID = 8 2011-10-26-10.38.44.106795+120 I25336469A510 LEVEL: Severe PID : 32702658 TID : 28432 PROC : db2sysc 0 INSTANCE: db2inst11 NODE : 000 DB : DBNAME APPHDL : 0-60658 APPID: GA91083E.O12D.111026073339 AUTHID : INSTOWNER EDUID : 28432 EDUNAME: db2agent (DBNAME) 0 FUNCTION: DB2 UDB, trace services, sqlt_logerr_string (secondary logging fu, probe:0 MESSAGE : SQLD_TCB: DATA #1 : String, 37 bytes Temp Table(15:8)=SESSION .TMP_TABLENAME NOTE: In your case: TID = 15 , FID = 8 , Temp Table(15:8)=SESSION .TMP_TABLENAME will be different 3. Following db2diag.log entry might be noticed: 2012-08-27-14.24.23.965613+120 I56366175A1620 LEVEL: Severe (Origin) PID : 24772858 TID : 3432 PROC : db2sysc 0 INSTANCE: redacted NODE : 000 DB : redacted APPHDL : 0-56246 APPID: 140.104.235.209.51796.120827081 AUTHID : TLAPP EDUID : 3432 EDUNAME: db2agent (redacted) 0 FUNCTION: DB2 UDB, data management, undoCreate, probe:2695 MESSAGE : ZRC=0x87040055=-2029780907=SQLD_PRGERR "Unknown PROGRAM ERROR" DIA8576C A data management services programming error occurred. DATA #1 : String, 51 bytes TCB fix count != 1 when undoing create data object! DATA #2 : Hexdump, 8 bytes 0x0700000066AF3C80 : 0000 0000 0000 0002 ........ CALLSTCK: [0] 0x0900000004D481D4 pdLog + 0xD4 [1] 0x0900000001E6D158 @102@undoCreate__FP8sqeAgentP8SQLD_TCBPiP16SQLB_OBJECT_DESCP20SQ LD_TABLE_OBJECT_LRUlP9SQLP_LSN8 + 0x370 [2] 0x0900000001E66980 sqldomUndo__FP8sqeAgentP10SQLDOM_LRHP9SQLP_LSN8sP15SQLD_RECOV_IN FO + 0x8DC [3] 0x0900000002517170 sqldmund__FP8sqeAgentP9SQLP_LSN8PcUisT4P8SQLP_TIDP15SQLD_RECOV_I NFO + 0x1F8 [4] 0x0900000004ECCE10 sqlptudo__FP8sqeAgentPUlP15SQLD_RECOV_INFOP11SQLP_TENTRY + 0x1EC [5] 0x0900000004ECCAB4 sqlptud1__FP8sqeAgentUl + 0x40 [6] 0x0900000004ECF800 sqlpxrbk__FP8sqeAgentP15SQLXA_CALL_INFOPiP9SQLP_GXIDPP11sqlo_xla tch + 0x380 [7] 0x0900000004ED01F0 sqlrrbck_dps__FP8sqlrr_cbiN22P15SQLXA_CALL_INFOP9SQLP_GXIDb + 0x1A0 [8] 0x0900000004ED1AC4 sqlrrbck__FP8sqlrr_cbiN32P15SQLXA_CALL_INFO + 0x9B4 [9] 0x0900000004EDB3E0 sqlrrbck__FP8sqlrr_cbiN32P15SQLXA_CALL_INFO@glueB4E + 0x90 NOTE: The processing code that reports the condition (FixCount !=1) is not the process at the root of the issue. The reporting process is only finding that something is not right and having no choice but to quit. There is another process that has a fix on this TCB, and it should not at this point. This problem can be observed in v9.7 fp3/3a only. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * Users who use DGTT WITH REPLACE on XA connections. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description. * **************************************************************** * RECOMMENDATION: * * Please upgrade v9.5 FixPack 9 or later. * **************************************************************** | |
Local Fix: | |
available fix packs: | |
DB2 Version 9.5 Fix Pack 9 for Linux, UNIX, and Windows | |
Solution | |
This problem is first fixed in DB2 V9.5 FixPack 9. | |
Workaround | |
not known / see Local fix | |
BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC80013 follow-up : | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 26.10.2011 12.03.2012 19.10.2012 |
Problem solved at the following versions (IBM BugInfos) | |
9.5.FP9 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.5.0.9 |