MVS provides no such serialization. 

A GLOBAL=YES object "just is." It could be entered any way one chose: BALR, or 
LINK, or ATTACH, or its data could be referenced with L and MVC.

Here is the problem @Peter is referring to: once you make the code available 
"globally" there is no general, supported way to put the toothpaste back into 
the tube. You never know when some task is going to call the code, and frankly, 
you don't know but what some task has called the code and halfway through using 
it has become "not dispatched" but might wake up at any time and continue using 
it.

What I am about to say is not IBM's supported position, but here goes. If you 
totally "control" (it's your code, in other words) all of the potential 
callers, then you could have some globally accessible (outside the module in 
question) "switch" that says "stop using the affected module." You -- the 
management code -- could set that switch and then wait "a little while." How 
long? Two seconds might be enough. Five seconds might be better. And then 
delete the module.

Here is the rub, and here is where IBM's position is different than what I 
wrote. Notice that I say "might." There is NO WAY OF KNOWING. Maybe you wait 
five seconds, and for some reason one of the using tasks gets delayed by six 
seconds and continues or starts referencing the module after it is deleted. 
With good luck it gets a S0C4. With bad luck -- or clever enough malice -- 
there is now some other code at that address and who knows what happens.

That is why *ever* deleting a "common" module is a system integrity violation. 

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Paul Gilmartin
Sent: Friday, August 27, 2021 8:39 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: LOAD with ADDR

On Fri, 27 Aug 2021 08:36:10 -0400, Peter Relson wrote:

><snip>
>LOAD with GLOBAL=YES also performs the same function flawlessly -- and 
>comes with the additional feature of automatic cleanup at termination 
>time (assuming that's the behavior you want).
></snip>
>
>The "automatic cleanup at termination" is in almost 100% of cases 
>considered a system integrity error (or at least a RAS error) since it 
>requires a lot of care to be certain that no code can be executing within 
>that address range at the time of your termination ...
>
Could the GLOBAL=YES object be entered by LINK?  If so, should
CSV have a use count preventing cleanup?

"that address range" should include temporarily leaving that range
by CALL, etc.

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to