DB2 - Problem description
Problem IC75505 | Status: Closed |
ST_BUFFER SPATIAL FUNCTION CRASHED DB2 WITH MEMORY CORRUPTION FAILURE | |
product: | |
DB2 FOR LUW / DB2FORLUW / 950 - DB2 | |
Problem description: | |
Due to data-specific conditions which have not yet been identified, the ST_Buffer spatial function very occasionally results in memory corruption which can cause the DB2 instance to hang or crash. The db2diag.log file shows a stack trace similar to the following: 2011-03-21-11.32.01.075143-300 I71420A958 LEVEL: Severe PID : 1810594 TID : 772 PROC : db2fmp (C) 0 INSTANCE: db2engr6 NODE : 000 EDUID : 772 EDUNAME: db2fmp (C) 0 FUNCTION: DB2 UDB, global services, sqlzAssertFailed, probe:10 DATA #1 : String, 142 bytes NON-FATAL ASSERTION FAILED!!! ASSERTION EXPRESSION: Invalid block eye-catcher (0x0) found at: SOURCE FILENAME: db2/gseOss.cpp LINE NUMBER: 61 CALLSTCK: [0] 0x09000000175A598C pdLog + 0x88 [1] 0x0900000016FE9DEC sqlzAssertFailedValist + 0x164 [2] 0x090000000360F3B0 ossAssertFailureAction + 0x130 [3] 0x090000000363A744 _ossMemAllocCheck + 0x764 [4] 0x090000000363A81C _ossMemFree + 0x5C [5] 0x090000000195C014 _GseOssFree + 0x94 [6] 0x0900000001AA5D18 SgsShapeBuffer + 0x9D8 [7] 0x09000000019CBD60 SgShapeGenerateBuffer + 0x1E0 [8] 0x0900000001B539B8 gseBuffer + 0xA18 [9] 0x0900000017472768 sqloInvokeFnArgs + 0xCB8 | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * DB2 Spatial Extender * **************************************************************** * PROBLEM DESCRIPTION: * * Due to data-specific conditions which have not yet been * * * * identified, the ST_Buffer spatial function very occasionally * * * * results in memory corruption which can cause the DB2 * * instance to * * hang or crash. The db2diag.log file shows a stack trace * * similar * * to the following: * * * * * * * * 2011-03-21-11.32.01.075143-300 I71420A958 LEVEL: * * Severe * * PID : 1810594 TID : 772 PROC : * * db2fmp * * (C) 0 * * * * INSTANCE: db2engr6 NODE : 000 * * * * EDUID : 772 EDUNAME: db2fmp (C) 0 * * * * FUNCTION: DB2 UDB, global services, sqlzAssertFailed, * * probe:10 * * DATA #1 : String, 142 bytes * * * * NON-FATAL ASSERTION FAILED!!! * * * * ASSERTION EXPRESSION: Invalid block eye-catcher (0x0) found * * at: * * SOURCE FILENAME: db2/gseOss.cpp * * * * LINE NUMBER: 61 * * * * CALLSTCK: * * * * [0] 0x09000000175A598C pdLog + 0x88 * * * * [1] 0x0900000016FE9DEC sqlzAssertFailedValist + 0x164 * * * * [2] 0x090000000360F3B0 ossAssertFailureAction + 0x130 * * * * [3] 0x090000000363A744 _ossMemAllocCheck + 0x764 * * * * [4] 0x090000000363A81C _ossMemFree + 0x5C * * * * [5] 0x090000000195C014 _GseOssFree + 0x94 * * * * [6] 0x0900000001AA5D18 SgsShapeBuffer + 0x9D8 * * * * [7] 0x09000000019CBD60 SgShapeGenerateBuffer + 0x1E0 * * * * [8] 0x0900000001B539B8 gseBuffer + 0xA18 * * * * [9] 0x0900000017472768 sqloInvokeFnArgs + 0xCB8 * **************************************************************** * RECOMMENDATION: * * Install V9.5 fix pack 8 * **************************************************************** | |
Local Fix: | |
available fix packs: | |
DB2 Version 9.5 Fix Pack 8 for Linux, UNIX, and Windows | |
Solution | |
Install V9.5 fix pack 8 | |
Workaround | |
Re-create ST_Buffer function as FENCE with the following SQL statements. This won't fix the cause of the crash but will keep it from crashing the DB2 instance and will only fail the current transaction. DROP SPECIFIC METHOD db2gse.ST_Buffer1; DROP SPECIFIC METHOD db2gse.ST_Buffer2; DROP SPECIFIC FUNCTION db2gse.GseBuffer; -- *--------------------------------------------------------------- -------- -- * buffer with or without a specific unit -- *--------------------------------------------------------------- -------- CREATE FUNCTION db2gse.GseBuffer ( geometry db2gse.ST_Geometry, distance DOUBLE, unitName VARCHAR(128), unitType VARCHAR(128), conversionFactor DOUBLE ) RETURNS db2gse.ST_Geometry SPECIFIC db2gse.GseBuffer EXTERNAL NAME 'db2gsefn!gseBuffer' LANGUAGE C PARAMETER STYLE DB2SQL DETERMINISTIC FENCED THREADSAFE CALLED ON NULL INPUT NO SQL NO EXTERNAL ACTION SCRATCHPAD 100 FINAL CALL ALLOW PARALLEL NO DBINFO TRANSFORM GROUP GseUDFTransform ; CREATE METHOD ST_Buffer ( distance DOUBLE ) RETURNS db2gse.ST_Geometry FOR db2gse.ST_Geometry RETURN SELECT db2gse.GseBuffer ( SELF, distance, CAST(NULL AS VARCHAR(128) ), CAST(NULL AS VARCHAR(128) ), CAST(NULL AS DOUBLE) ) FROM TABLE ( VALUES (1) ) AS dummy(n) -- return NULL if SELF is NULL or empty WHERE SELF IS NOT NULL AND SELF..numpoints > 0 ; CREATE METHOD ST_Buffer ( distance DOUBLE, unitName VARCHAR(128) ) RETURNS db2gse.ST_Geometry FOR db2gse.ST_Geometry RETURN SELECT db2gse.GseBuffer(SELF, distance, unitName, u.unit_type, u.conversion_factor) FROM TABLE ( VALUES (UPPER(unitName)) ) AS n(unit_name) LEFT OUTER JOIN db2gse.gse_units_of_measure AS u ON ( n.unit_name = u.unit_name ) -- return NULL if SELF is NULL or empty WHERE SELF IS NOT NULL AND SELF..numpoints > 0 ; | |
BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC75707 follow-up : | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 01.04.2011 27.06.2011 27.06.2011 |
Problem solved at the following versions (IBM BugInfos) | |
9.5.FP8 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.5.0.8 |