Improve registering signal handlers in java.lang.Terminator.setup()

Alan Bateman Alan.Bateman at oracle.com
Fri Aug 17 08:58:07 UTC 2012


On 16/08/2012 16:32, Neil Richards wrote:
> :
>
> First, I think the discussion on the particular VM implementation
> behaviour is a slight diversion from Frank's suggested change, which I
> believe is all about making the Java code more robust / agnostic to the
> VM implementation behaviour.
I think it was important to get some context as it was missing in the 
original mails.


>
> > From the perspective of the code in Terminator.setup(), I think the
> pertinent question is:
>          Should the code try to register shutdown hook handlers for other
>          signals if the attempt to register for one signal fails with an
>          exception?
> Or, to put it another way:
>          Should the registration of the shutdown hook handler for each
>          signal be independent of each other?
>
> Frank's suggested change, and my argument, is that these registrations
> should be independent - i.e. that Terminator.setup() should register
> shutdown hook handlers for all (shutdown) signals that the system (VM)
> allows it to.
I think we're in agreement on that.

On JVM_RegisterSignal then it returns -1 if the signal is in use by the 
VM or there is an error examining/changing the action. If the signal is 
ignored (existing action is SIG_IGN) then it just returns SIG_IGN 
without attempting to change it. It probably should have defined a 
specific error for this case as the caller can't distinguish it from the 
case that the action was changed and the previous action was SIG_IGN. If 
there was an error for this case then sun.misc.Signal could have mapped 
it to an exception, perhaps IllegalStateException. Whether it's worth 
changing this now isn't clear to me but changing it is potentially 
disruptive. Disruptive meaning that it would change the behavior of 
sun.misc.Signal so that it would throw an exception for a case where it 
doesn't do so today. Folks shouldn't be using sun.misc.Signal of course 
but we know that they do.


> :
>
> However, I still consider that VM modification would be logically
> orthogonal to Frank's suggested change, and suggest that his change
> could continue to be approved for contribution at this point, regardless
> of the separate VM-related discussion in this area.
>
Both David and I have already reviewed Frank's change and okay with it.

I'll leave it to you whether you want to propose a change to 
JVM_RegisterSignal.

-Alan



More information about the core-libs-dev mailing list