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: