IBM Support

IC72148: DECLARE GLOBAL TEMPORARY TABLE WITH REPLACE OPTION MIGHT CAUSE DOUBLE FREE IN XA ENVIRONMENT.

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • Issue fixed with APAR IC72148, 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 IC72148 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 IC72148, 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.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * Users who use DGTT WITH REPLACE on XA connections.           *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * See Error Description.                                       *
    ****************************************************************
    * RECOMMENDATION:                                              *
    * Please upgrade v9.7 fixpack 4 or later.                      *
    ****************************************************************
    

Problem conclusion

  • This problem is first fixed in v9.7 fixpack 4.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IC72148

  • Reported component name

    DB2 FOR LUW

  • Reported component ID

    DB2FORLUW

  • Reported release

    970

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-10-23

  • Closed date

    2011-05-24

  • Last modified date

    2012-10-19

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    IC75978 IC79479

Fix information

  • Fixed component name

    DB2 FOR LUW

  • Fixed component ID

    DB2FORLUW

Applicable component levels

  • R970 PSN

       UP



Document information

More support for: DB2 for Linux, UNIX and Windows

Software version: 9.7

Reference #: IC72148

Modified date: 19 October 2012