6649594: Intermittent IOExceptions during dynamic attach on linux and solaris
Daniel D. Daugherty
daniel.daugherty at oracle.com
Thu Jul 15 13:41:01 PDT 2010
On 7/15/2010 4:03 AM, Alan Bateman wrote:
> Daniel D. Daugherty wrote:
>> :
>> src/os/linux/vm/attachListener_linux.cpp
>> The addition of UNIX_PATH_MAX means that the size of the buffer
>> on line 61: static char _path[PATH_MAX+1]
>> is now or can be potentially out of sync with the size of the
>> buffer on line 170 char path[UNIX_PATH_MAX]
>>
>> If UNIX_PATH_MAX happens to be greater than PATH_MAX, and the
>> path to the socket is actually longer than PATH_MAX, then we'll
>> store a short path in the buffer on line 61.
>>
>> Is there some reason not to use the new UNIX_PATH_MAX in both
>> locations?
> Thanks Dan, I missed that one although it shouldn't cause a problem
> (as UNIX_PATH_MAX (108) will be less than PATH_MAX (usually 4096)).
Your choice on how to resolve this one.
>
>>
>> src/os/solaris/vm/attachListener_solaris.cpp
>> The return values from snprintf() aren't checked here for potential
>> overflow conditions. It seems to me that the Solaris logic could
>> benefit from the same sanity checks that you make in the Linux
>> version.
> I didn't change or add this as it didn't seem likely that we would be
> started with java.io.tmpdir property set to a location that is close
> to the maximum path length. I suspect other things (like
> File.createTempFile) would also have problems if java.io.tmpdir were
> set this way. It is easily fixed to check for truncation, if you think
> it is important. The reason I added the check for truncation in the
> Linux implementation is because it's a path to a socket file.
And it's a much shorter path. I would be happier if we had a
truncation check, but I'm okay if we don't.
>
>>
>> I would keep the warnings debug only. I see you have a debug only
>> warning in the Solaris code, but no warning in the Linux code. Or
>> were you talking about a different warning?
> I was wondering if I should additional warnings into this code, and if
> so, if they should be in the product build. I know warning messages
> can cause products when intermingled with application output.
Is there a TraceAttachOnDemand flag? If there is, then I would be
okay if the product bits output a message when that option is
enabled. Otherwise, I would just make it debug only.
Dan
More information about the serviceability-dev
mailing list