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: