DB2 - Problem description
Problem IC96694 | Status: Closed |
ATS Daemon may cause a stack overflow due to recursive calls and subsequent SEGV if an error condition is encountered | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
Starting in v97fp6 the new MON interface MON_GET_APPLICATION_HANDLE was used in the function createStatusRecord used by the ATS Daemon. If customer has not run db2updv97 by any chance, an error like: 2013-02-14-00.00.00.661847+000 E477786A572 LEVEL: Error PID : 7929988 TID : 1046 PROC : db2acd 0 INSTANCE: db2pe1 NODE : 000 APPID : *LOCAL.db2pe1.130214000000 EDUID : 1046 EDUNAME: db2acd 0 FUNCTION: DB2 UDB, Administrative Task Scheduler, AtsTask::createStatusRecord, probe:300 MESSAGE : ZRC=0xFFFFFE48=-440 DATA #1 : <preformatted> [IBM][CLI Driver][DB2/AIX64] SQL0440N No authorized routine named "MON_GET_APPLICATION_HANDLE" of type "FUNCTION" having compatible arguments was found. SQLSTATE=42884 will keep appearing in the db2diag.log and then db2acd pid will be SEGV and will do it in tight loop for some time holding on to the db2diag.log file lock ( blocking other threads from writing to the db2diag.log thus possibly slowing the performance of the system ) before it gets out and db2wdog detects it and restarts the db2acd process. The db2wdog will put in this message in the db2diag.log 2013-02-14-00.13.03.852119+000 E825024A398 LEVEL: Error PID : 18677912 TID : 258 PROC : db2wdog 0 INSTANCE: db2pe1 NODE : 000 EDUID : 258 EDUNAME: db2wdog 0 FUNCTION: DB2 UDB, base sys utilities, sqleChildCrashHandler, probe:5463 DATA #1 : <preformatted> A non-EDU child crashed Process id: 7929988, OSS term code: 0x101, signal: 11 If a procstack of the db2acd is collected during this time frame the stack will look like: 0x090000000dda059c sqloOpenTrapLog(??, ??, ??) + 0x3c <signal> 0x09000000001eff7c _doprnt(??, ??, ??) + 0x7c 0x090000000d9d3280 PDLogBuffer::sprintf(const char*,...)(0x9001000a183a478, 0x90000000e8740d0, 0x1106cf69d) + 0xd4 0x090000000d970140 @97@formatPDLogHeader.fdpr.chunk.1(PDLogFacility&,PD_CONTEXT&,un signed long,unsigned int,unsigned int,unsigned long)(??, ??, ??, ??, ??, ??) + 0x1c 0x090000000dc523ec @97@pdLogInternal.fdpr.chunk.10(unsigned long,unsigned int,unsigned long,unsigned int,unsigned long,unsigned long,unsigned long,unsigned long,void*,unsigned long,bool,char**)(0x2, 0x1dd000241dd00024, 0xfffffffffffffe48, 0x0, 0x0, 0x12c, 0x2, 0x1) + 0x1d0 0x090000000d9c7c1c pdLogInternal(unsigned long,unsigned int,unsigned long,unsigned int,unsigned long,unsigned long,unsigned long,unsigned long,void*,unsigned long,bool,char**)(??, ??, ??, ??, ??, ??, ??, ??) + 0xa4 0x090000000d972a64 pdLogPrintf.fdpr.chunk.1(0x2, 0x1dd000241dd00024, 0xfffffffffffffe48, 0x12c, 0x2, 0x90000000f58c234, 0x1106cfeb8, 0x1) + 0xd4 0x090000000f4fcf50 atsLogCLIError(short,int,unsigned int,unsigned long,unsigned long)(0x3000000000003, 0x2026000020260, 0xfffffffdfffffffd, 0x5d00000000005d, 0x5d00000000000b) + 0x270 0x090000000f507ee0 AtsTask::createStatusRecord(AtsTimeStamp*)(??, ??) + 0x100 0x090000000f5097e8 AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025e00020 25e, 0x300000003) + 0x5e8 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025d00020 25d, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025c00020 25c, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025b00020 25b, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025a00020 25a, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025900020 259, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025800020 258, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025700020 257, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025600020 256, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025500020 255, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025400020 254, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025300020 253, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025200020 252, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025100020 251, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2025000020 250, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2024f00020 24f, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2024e00020 24e, 0x300000003) + 0x5fc .. .. 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000900020 009, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000800020 008, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000700020 007, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000600020 006, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000500020 005, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000400020 004, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000300020 003, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000100020 001, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x2000200020 002, 0x300000003) + 0x5fc 0x090000000f5097fc AtsTask::updateStatusRecordAndCommit(AtsTaskStatus)(0x1106fd5c8, 0x300000003) + 0x5fc 0x090000000f506300 AtsTask::run()(??) + 0x4a0 0x090000000f500a68 AtsThread::entryPoint(void*)(??) + 0x48 Side effects of this issue: ----------------------------- A potential slowdown can happen, if it so happens that during the same time other threads who are doing legitimate work also want to write something to db2diag.log. Verification ( if its the issue ): ------------------------------------- 1) Run db2 "select application_handle, application_name, application_id from table(mon_get_connection(mon_get_application_handle(),-1)) as conn" . If it returns an error, use the workaround provided below to resolve the issue. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 v10.1 FP4 * **************************************************************** | |
Local Fix: | |
1) Run db2updv97 -d <dbname> -a OR 2) db2diag -A ( to remove the file lock on db2diag.log ) Recommendation: Run db2updv97 -d <dbname> -a for a permanent resolution. | |
available fix packs: | |
DB2 Version 10.1 Fix Pack 4 for Linux, UNIX, and Windows | |
Solution | |
Fixed in DB2 v10.1 FP4 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 08.10.2013 02.06.2014 02.06.2014 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.4 |