PJ40806: CTL-571 AT CCIOFLIH WITH HEAPCHECK OFF
Closed as program error.
See Problem Summary.
APAR NUMBER: PJ40806 PRODUCT: z/TPF FUNCTIONAL AREA: DEBUG TOOL SUPPORT SHIPPED IN PUT: 10 ABSTRACT: Upon registering the z/TPF debugger for trace by terminal, a CTL-571 (possibly at CCIOFLIH) dump may occur. PACKAGE CONTENTS: Source Segments: (C) base/cntl/tpf_app_base.cntl (C) base/cntl/tpf_app_base_ux.cntl (C) base/rt/cdbtbt.c (C) base/rt/cdbuxt.c Object Only Binaries: None. Configuration Independent Binaries: (C) base/lib/libCDB0.so (C) base/load/CDB0.so (C) base/obj/cdbtbt.o Support Files: base/lst/CDB0.map base/lst/cdbtbt.lst OTHER BINARIES TO BUILD: YES (C) <sys>/load/CDBX.so (C) <sys>/obj/cdbuxt.o (C) <sys>/load/IPAT.so (C) <sys>/obj/ipat.o COMMENTS: After registering the z/TPF debugger for trace by terminal the following sequence of events occurred for a customer on a multi-istream configuration: IS-1: ECB A executes cnsf.c (COMX). IS-1: ECB A locks the socket lock. IS-1: cnsf.c calls CNSG with the socket lock held. IS-1: ECB A goes through the chk3 (cchook) debugger inter-module call hooks. IS-1: ECB A enters cudu (ccvage) to test if the debugger should be started for the program being entered (CNSG). IS-1: ECB A attempts to lock the debugger registration lock in CUDUDPLE. IS-2: ECB B is created as a result of some comms request. IS-2: ECB B enters cdbtbt.c (CDB0) to indicate if this ECB is a candidate for debugging based on the comms type and available debugger registration entries on the system. IS-2: ECB B locks the debugger registration lock. IS-2: An OSA interrupt occurs. IS-2: Interrupt handling attempts to lock the socket lock. As a result, ECBs A and B are deadlocked resulting in a CTL-571 dump.
SOLUTION: This situation will be prevented with the following code changes: 1) The NODEBUG PAT setting is intended to prevent debugging of any program that acquires or is executed while the socket or file system locks are held. This is necessary to prevent application/debugger deadlock situations as the debugger makes TCP/IP and file system calls in the normal course of operation. CNSG is marked as NODEBUG in base/cntl/tpf_app_base.cntl to prevent CNSG from being debugged. 2) cdbtbt.c has been updated to mask off interrupts while the debugger registration lock is held. 3) A few other programs were changed to use the NODEBUG PAT setting since locks were shown to be held when debugger code was called. COREQS: NO None. MIGRATION CONSIDERATIONS: YES User exit changes: The tpf_terminal_user_exit user exit in cdbuxt.c is affected by the change in segment cdbtbt.c (CDB0). Since cdbtbt.c now masks interrupts, user code in the user exit tpf_terminal_user_exit should be examined to ensure that no requests for file I/O etc are made. Build and load process changes: The following programs are now marked as NODEBUG in the PAT: DYDY, CVBV, CNSD, CTLA, CNSG, CYF1, CMR0, CMR1, CMR2, CMR3, CMR4, and UMR0 BUILD COMMANDS AND INSTRUCTIONS: YES #maketpf commands for linux maketpf -f CDBX cdbuxt.o maketpf -f CDB0 cdbtbt.o maketpf -f IPAT maketpf CDBX link TPF_VERIFY_LINK_REFS=NO maketpf CDB0 link TPF_VERIFY_LINK_REFS=NO maketpf CDBX link maketpf CDB0 link UPDATED INFORMATION UNITS: NO None. See your IBM representative if you need additional information. DOWNLOAD INSTRUCTIONS: http://www.ibm.com/software/htp/tpf/maint/maintztpf.html APAR URL: http://www.ibm.com/software/htp/tpf/ztpfmaint/put10/PJ40806.htm
Reported component name
Reported component ID
NoSpecatt / Xsystem
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
Fixed component ID
Applicable component levels