MPROUTE HANGS AFTER IOCTL() ABEND
APAR Identifier ...... VM63690 Last Changed ........ 06/11/08 MPROUTE HANGS AFTER IOCTL() ABEND Symptom ...... AB ABEND Status ........... CLOSED PER Severity ................... 2 Date Closed ......... 05/02/10 Component .......... 568411220 Duplicate of ........ Reported Release ......... 440 Fixed Release ............ 999 Component Name VM LE Special Notice Current Target Date .. Flags SCP ................... Platform ............ Status Detail: SHIPMENT - Packaged solution is available for shipment. PE PTF List: PTF List: Release 440 : UM31365 available 05/02/15 (0501 ) Parent APAR: Child APAR list: ERROR DESCRIPTION: The user's MPROUTE virtual machine would "hang" after running for quite some time. The user would have to re-IPL the virtual machine and restart MPROUTE. The dump sent by the customer showed the hang occurring in the ABEND processing code. LOCAL FIX: PROBLEM SUMMARY: **************************************************************** * USERS AFFECTED: All users of the ioctl() C function call and * * all users of MPROUTE on z/VM 4.4.0 or later. * * * **************************************************************** * PROBLEM DESCRIPTION: * **************************************************************** * RECOMMENDATION: APPLY PTF * **************************************************************** The user reported a hang condition in the MPROUTE virtual machine after it had run successful for quite some time. The virtual machine was completely unresponsive and a display of the PSW showed the virtual machine was waiting in the CMS multitasking null thread for something to do. PROBLEM CONCLUSION: The virtual machine ABEND dump showed that the CMS multitasking null thread was entered by way of the LE condition handler which was attempting to process and earlier LE ABEND. This earlier ABEND was traced back to the ioctl() function issuing an internal TESTSTOR() function call to verify that the parameter list assed to ioctl() was in accessible storage. The TESTSTOR determined the storage was not accessible, issued an internal ABEND, and expected the LE condition handler to properly clean up the environment. It was determined that this internal ABEND from TESTSTOR was invalid. The ioctl() call was mishandling its input parameter lists. The length of the arguments was determined by looking somewhere in the passed parameter list and then recalculating the position of the third input parameter based on what the length was determine to be. This caused ioctl() to pass an invalid address to TESTST which resulted in TESTSTOR issuing an internal ABEND, which led to the LE condition handler eventually hanging. The fix for the problem was found in a later release of z/OS LE ioctl() code. The ioctl() code now uses the va_start, va_arg, and va_end macros to determine the lengths of the arguments and their positions. TEMPORARY FIX: COMMENTS: MODULES/MACROS: CEEEV003 CELHV003 EDCOXFR5 SRLS: NONE RTN CODES: CIRCUMVENTION: MESSAGE TO SUBMITTER: