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:22:34 UTC 2014
Yumin,
I had the same question.
Another possibility would be to leave the check in, and to add a comment
after reporting SIGINT as SIG_IGN that this could be an artifact of running in a non-interactive shell
opinions?
thanks,
Karen
On Mar 14, 2014, at 1:17 PM, Yumin Qi wrote:
> Karen,
>
> I agree only report non-interactive shell warning --- if under other case user replace the signal handler, we should give warning. This lets me think of the fix one more time, do we really want to silent for non-reactive shell? It is no harm for customer knows what happened --- it is the shell replace the handler. If user understand that, it is OK I think.
>
> Thanks
> Yumin
>
> On 3/14/2014 10:10 AM, Karen Kinnear wrote:
>> #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