RFR 8237858: PlainSocketImpl.socketAccept() handles EINTR incorrectly

Alan Bateman Alan.Bateman at oracle.com
Wed Mar 11 08:21:24 UTC 2020


On 11/03/2020 08:09, Vyom Tewari26 wrote:
> Hi Alan,
> Thanks for comment yes for  >=JDK13 we are using new socket impl which 
> does not have this problem, i am not planning to wright a test,  to 
> test this issue we need to get the native thread ID then we have to 
> interrupt the thread to see if JDK code is behaving as expected.
> I tested this issue at my local Linux env, what i did is modify the 
> java.lang.Thread.getId() to always return the *native thread id of 
> main thread* and use this native thread id in the test program to send 
> a signal(kill -SIGPIPE  threadid) and  i checked that JDK code is 
> behaving as expected.
> We can try to write a test case(which requires some native code as 
> well) which simulate the above but that will be lot of work.
> We can file a new issue to write a test which test 
> how(read,write,accept) operations behave when they are interrupted by 
> a signal.
> Alan, what do you think ?.
Native tests used to be hard but there is supporting infrastructure in 
the build for some time that makes it a lot easier. In this case, I 
think it should be possible to invoke a JNI method that returns the 
native thread id and then it can be signalled when the thread is blocked 
in accept (or read or write). So it shouldn't be too hard, it comes to 
whether anyone has time.

-Alan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/net-dev/attachments/20200311/6503a2f5/attachment.htm>


More information about the net-dev mailing list