On Tue, 30 Jan 2024 07:14:45 GMT, Alan Bateman <al...@openjdk.org> wrote:

>> If we are going to check close for errors then we will have to know for 
>> certain we are only trying to close open fd's, and we will have to deal with 
>> EINTR. I would think this is a "best effort" to close open FD's and not 
>> something we have to care about in detail.
>
>> If we are going to check close for errors then we will have to know for 
>> certain we are only trying to close open fd's, and we will have to deal with 
>> EINTR. I would think this is a "best effort" to close open FD's and not 
>> something we have to care about in detail.
> 
> Right, EINTR would need to be ignored as it would be wrong to restart. I'm 
> scratching my head as to why this code would even do with EIO or if it even 
> possible here.

Looking at man close, EIO gets returned if:
> [EIO]              A previously-uncommitted write(2) encountered an 
> input/output error.

If I understand this `launch=<cmd>` option correctly for the jdwp agent, then 
the arbitrary command gets launched very early in the lifecycle of the JVM. So 
in theory, I think there shouldn't be too many file descriptors that the JVM 
has opened so far and the chances of it having started writing to some of those 
opened file descriptors (other than standard out/err) perhaps is slim? But 
that's just a guess. Probably not a strong one too, given that if the JVM was 
launched with any other agent along with jdwp, then it's unknown if the other 
agent would have opened any file descriptors for write. 

My understanding of these close() calls after fork() in this code, matches 
David's - I think it's a best effort attempt. So perhaps ignoring such 
failures, like we do now, is OK?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17588#discussion_r1471531584

Reply via email to