RFR: 6536943: Bogus -Xcheck:jni warning for SIG_INT action for SIGINT in JVM started from non-interactive shell

Karen Kinnear karen.kinnear at oracle.com
Fri Mar 14 17:10:54 UTC 2014


#define SHUTDOWN_SIGNAL1 SIGINT

I also wondered about checking if the current SIGINT interrupt handler setting was
SIG_IGN.

The question is - do we want to only not report for non-interactive or for anyone who
has set SIG_IGN? I was leaning in the direction of non-interactive.

thanks
Karen

On Mar 14, 2014, at 12:57 PM, Yumin Qi wrote:

> Dmitry,
> 
>  #define INTERRUPT_SIGNAL SIGUSR1
> 
>   I think this is not SIGINT.
> 
> Thanks
> Yumin
> 
> On 3/14/2014 9:27 AM, Yumin Qi wrote:
>> Dmitry,
>> 
>>    case INTERRUPT_SIGNAL:
>>    jvmHandler = CAST_FROM_FN_PTR(address, SIG_DFL);
>>    break;
>> 
>> Do you mean we use
>>    if (isatty(fileno(stdin)))
>>       jvmHandler = CAST_FROM_FN_PTR(address, SIG_DFL);
>>    else
>>       jvmHandler = CAST_FROM_FN_PTR(address, SIG_IGN);
>> 
>> I think this will solve the problem. Need more opinions.
>> 
>> Under redirecting,  isatty still can correctly tests for non-interactive shell, please check bug comments.
>> 
>> Thanks
>> Yumin
>> 
>> 
>> On 3/14/2014 9:05 AM, Dmitry Samersoff wrote:
>>> Yumin.
>>> 
>>> I find the only place per os_*.cpp where we check for SIGINT
>>> 
>>> os/linux/vm/os_linux.cpp
>>> 
>>> 4498:  DO_SIGNAL_CHECK(INTERRUPT_SIGNAL);
>>> 
>>> so it might make sense to place it under
>>> 
>>>   if isatty() {}
>>> 
>>> rather than change macro.
>>> 
>>> Also isatty() call is expensive and will not give you expected result if
>>> stdin is redirected (e.g. by custom launcher)
>>> 
>>> 
>>> I think it's safe to check whether the handler for SIGINT is SIG_IGN
>>> and skip the check in this case.
>>> 
>>> -Dmitry
>>> 
>>> 
>>> On 2014-03-14 08:18, Yumin Qi wrote:
>>>> Have changed, new URL at:
>>>> http://cr.openjdk.java.net/~minqi/6536943/webrev02
>>>> 
>>>> Thanks
>>>> Yumin
>>>> 
>>>> On 3/13/2014 4:10 PM, Yumin Qi wrote:
>>>>> Thanks for review. I will change the order.
>>>>> 
>>>>> Yumin
>>>>> 
>>>>> On 3/13/2014 3:28 PM, Dean Long wrote:
>>>>>> (isatty(fileno(stdin)) || sig != SIGINT)
>>>>>> 
>>>>>> You might want to reverse that:
>>>>>> 
>>>>>> (sig != SIGINT || isatty(fileno(stdin)))
>>>>>> 
>>>>>> because isatty() could be expensive.
>>>>>> 
>>>>>> dl
>>>>>> 
>>>>>> 
>>>>>> On 3/13/2014 2:27 PM, Yumin Qi wrote:
>>>>>>> David and all,
>>>>>>> 
>>>>>>>   I have changed to skip SIGINT only if run in a non-interactive
>>>>>>> shell. Please check webrev:
>>>>>>> 
>>>>>>> http://cr.openjdk.java.net/~minqi/6536943/webrev01/
>>>>>>> 
>>>>>>> Thanks
>>>>>>> Yumin
>>>>>>> 
>>>>>>> On 3/13/2014 8:19 AM, Yumin Qi wrote:
>>>>>>>> On 3/12/2014 10:08 PM, David Holmes wrote:
>>>>>>>>> Hi Yumin,
>>>>>>>>> 
>>>>>>>>> Not sure that disabling all signal checks because there is a
>>>>>>>>> problem with one signal is the right solution for this.
>>>>>>>>> 
>>>>>>>> Or we check if the signal is SIGINT --- skip it only.
>>>>>>>> 
>>>>>>>> Thanks
>>>>>>>> Yumin
>>>>>>>>> That said I don't know what utility the signal checks provide in
>>>>>>>>> the first place. Can anyone comment on that?
>>>>>>>>> 
>>>>>>>>> David
>>>>>>>>> 
>>>>>>>>> On 13/03/2014 9:55 AM, Yumin Qi wrote:
>>>>>>>>>> Forget to mention tests:
>>>>>>>>>> JPRT test;
>>>>>>>>>> manually testing on Java2Demo, for both shell and non-interactive
>>>>>>>>>> shell.
>>>>>>>>>> 
>>>>>>>>>> This is only disabling checking signal handlers under
>>>>>>>>>> non-interactive
>>>>>>>>>> shell, so no need to test more.
>>>>>>>>>> 
>>>>>>>>>> Thanks
>>>>>>>>>> Yumin
>>>>>>>>>> 
>>>>>>>>>> On 3/12/2014 2:52 PM, Yumin Qi wrote:
>>>>>>>>>>> Hi, Can I have your codereview for this simple change:
>>>>>>>>>>> 
>>>>>>>>>>> http://cr.openjdk.java.net/~minqi/6536943/webrev00/
>>>>>>>>>>> 
>>>>>>>>>>> Summary: Under non-interactive shell, -Xcheck:jni output
>>>>>>>>>>> warning for
>>>>>>>>>>> SIGINT, since non-interactive shells set SIGINT to SIG_IGN as
>>>>>>>>>>> part of
>>>>>>>>>>> the job control features. The fix is that don't check signal
>>>>>>>>>>> handlers
>>>>>>>>>>> if java run in a non-interactive shell. This applies to all
>>>>>>>>>>> platforms
>>>>>>>>>>> except for Windows.
>>>>>>>>>>> 
>>>>>>>>>>> Thanks
>>>>>>>>>>> Yumin
>>> 
>> 
> 



More information about the hotspot-runtime-dev mailing list