Informix - Problem description
Problem IT32849 | Status: Closed |
EXCOMPAT: USE OF STORED PROCEDURES USING UTL_FILE_GET_LINE CAN THROW AFS, HANG OR CRASH THE SERVER4 | |
product: | |
INFORMIX SERVER / 5725A3900 / C10 - IDS 12.10 | |
Problem description: | |
The excompat udr functions can be used to read data from a file. If you create a stored procedure using these and are accessing a line, which is too long for the buffer, this can lead to all sorts of memory corruptions. The afs depend on which memory is overwritten, and can lead to all sorts of errors. One example is: 15:07:13 Found during mt_shm_malloc_segid 5, error seen 1 times since last print to the log 15:07:13 Pool '33' (0x462ef040) 15:07:13 Bad free block 0x46446038 15:07:13 Assert Warning: Memory free block header corruption detected in mt_shm_malloc_segid 5 15:07:13 IBM Informix Dynamic Server Version 12.10.FC14 15:07:13 Who: Session(33, user@hostname, 18142, 0x44f3a048) Thread(61, sqlexec, 44ef6388, 1) File: mtshpool.c Line: 1817 15:07:13 Results: Pool free list repaired 15:07:13 Action: Please notify IBM Informix Technical Support. 15:07:13 stack trace for pid 20541 written to DUMPDIR/af.4256501 but it can also look like this: 16:58:37 IBM Informix Dynamic Server Version 12.10.FC14 16:58:37 Who: Session(26, user@hostname, 0, 0x44f3b178) Thread(53, dbScheduler, 44ef98c8, 1) File: mtshpool.c Line: 1834 16:58:37 Results: Pool free list not repaired 16:58:37 Action: Please notify IBM Informix Technical Support. 16:58:37 stack trace for pid 29693 written to DUMPDIR/af.41d2d9b 16:58:37 See Also: DUMPDIR/af.41d2d9b 16:58:38 Memory free block header corruption detected in mt_shm_malloc_segid 1 16:58:38 invoke_alarm(): /bin/sh -c '/opt/informix/IBM/12.10.FC14n_lb/etc/alarmprogram.sh 3 6 "Internal Subsystem failure: 'MT'" "Exception Caught. Type: MT_EX_OS, Context: mem" "" 6300' 16:58:38 invoke_alarm(): mt_exec failed, status -1, errno 0 16:58:38 (-9791): ERROR: Routine execution trap -- procname= procid=575 reason: mem In the stored procedure utl_ifle_get_Line CALL "informix".utl_file_get_line(lFilePointer, lString); is used with a defined length for lString, but the line trying to be read, is much bigger than that. This leads to the memory being overwritten, and depending on the memory, to all sorts of errors. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * Users of Informix Server prior to 12.10.xC15 and 14.10.xC5. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Informix Server 12.10.xC15 (when available) or * * 14.10.xC5. * **************************************************************** | |
Local Fix: | |
Solution | |
Workaround | |
**************************************************************** * USERS AFFECTED: * * Users of Informix Server prior to 12.10.xC15 and 14.10.xC5. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Informix Server 12.10.xC15 (when available) or * * 14.10.xC5. * **************************************************************** | |
Comment | |
Fixed in Informix Server 12.10.xC15 and 14.10.xC5. | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 13.05.2020 18.01.2021 18.01.2021 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) |