Problem:
The TSO TESTAUTH command does not provide for locating non-reentrant code in authorized reentrant programs. It loads authorized reentrant code into subpool 251 which is not key 0 thus preventing abends during testing. The programmer could test his code repeatedly using TESTAUTH and think that all the bugs have been worked out. Then when the code is implemented in production, S0C4 abends suddenly occur. It is only after the program is moved into authorized production libraries that non-reentrant code problems appear. When authorized reentrant programs are normally loaded by Program Fetch, they are loaded into subpool 252 which is a key 0 subpool where non-reentrant code will abend. Finding non-reentrant code once a reentrant program is put into production is frustrating to say the least. It can cause serious outages and the code needs to be debugged to find the bad code. Another problem is there may be more than one piece of non-reentrant code that would cause problems with subsequent production implementation causing a repeat of program debugging and reimplementation into production.
The Comments posted to this requirement
-------------------------
Tony Harminc
Posted: May 22, 2020 09:26 PM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
I can certainly see the reason for this requirement, but it's not obvious to me how breakpoints would work if the program code was loaded into key 0 storage. Currently TESTAUTH will not set a breakpoint into system key storage, and I assume you don't want the ability to set breakpoints in such modules to be removed. Certainly I don't. I think this would have to be an option on the TESTAUTH command, and/or on the LOAD subcommand. Given the amount of work needed to make TESTAUTH work properly in the modern z/OS environment, I think there are higher priorities (e.g. full support for 64-bit registers and addresses, long names, etc...).
-------------------------
Brian Westerman
Posted: May 23, 2020 12:22 AM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
I think the OP has a point that it's difficult to be able to test without actually obtaining a complete environment, and although misleading, it does make sense why it's implemented the way IBM currently has it. In the end I have to agree with the first comment, it's not really a very high priority, especially when you consider all of the other features that are completely missing from test.
Brian
-------------------------
Bill Ridder
Posted: May 23, 2020 01:58 AM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
I agree with the not being able to set breakpoints in key 0 code (unless IBM can work some magic here), but at least the program can be tested without breakpoints to see if it runs without errors/abends. That is still much better than finding the 0C4's in production.
Bill Ridder
-------------------------
Stan W Abramczyk, Jr
Posted: May 26, 2020 07:28 PM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
I agree: TESTAUTH should create the same environment during testing that the tested program would experience during normal execution.
-------------------------
Tim Hare
Posted: May 29, 2020 10:02 PM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
1. I think the RENT option of the Assembler should help avoid this sort of problem, though it is not foolproof.
2. If this is not Assembler, then I would hope other compilers support a similar option, but haven't researched that
3. If this is truly system-level code, shouldn't it be tested in some non-production partition to find these kinds of bugs?
4. Does loading one of these into key 0 storage present a security risk? If so, I'd say security concerns trump the original poster's testing concerns.
-------------------------
Bill Ridder
Posted: Jun 08, 2020 07:06 PM
TSO TESTAUTH should load authorized reentrant programs into key 0 storage
-------------------------
RENT doesn't help during TEST and TESTAUTH testing because the program is not loaded into key 0 storage. Also, having the load module loaded into key 0 storage does not add any security concerns because with TESTAUTH, the program is already running authorized.
Bill