RFR(S): *NEED SECOND* JDK-8157236 - attach on ARMv7 fails with com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file
Dmitry Samersoff
dmitry.samersoff at oracle.com
Mon Aug 15 08:49:33 UTC 2016
On 2016-08-12 12:04, Dmitry Samersoff wrote:
> David,
>
> Updated webrev is:
>
> http://cr.openjdk.java.net/~dsamersoff/JDK-8157236/webrev.04/
>
> Windows is absolutely different story that requires significant efforts
> to reproduce error conditions and test changes. Also it has nothing to
> do with ARMv7.
>
> So I would prefer to address windows issues separately either as a part
> of JDK-8159799 or as a separate CR.
>
> -Dmitry
>
> On 2016-08-12 03:24, David Holmes wrote:
>> Hi Dmitry,
>>
>> On 12/08/2016 2:55 AM, Dmitry Samersoff wrote:
>>> David,
>>>
>>> Please see updated webrev.
>>>
>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8157236/webrev.03/
>>>
>>> I didn't touch windows version because it quite different from *NIX one.
>>
>> Do we ever see failures on Windows? Is so we should add diagnostics
>> there too even if they are different to *NIX.
>>
>> I would still like to see what file it is working with. We need some
>> logging in here:
>>
>> bool AttachListener::is_init_trigger() {
>> if (init_at_startup() || is_initialized()) {
>> return false; // initialized at startup or already
>> initialized
>> }
>> char fn[PATH_MAX+1];
>> sprintf(fn, ".attach_pid%d", os::current_process_id());
>> int ret;
>> struct stat64 st;
>> RESTARTABLE(::stat64(fn, &st), ret);
>> if (ret == -1) {
>> + log ("failed to find attach file: %s, trying alternate", fn)
>> snprintf(fn, sizeof(fn), "%s/.attach_pid%d",
>> os::get_temp_directory(), os::current_process_id());
>> RESTARTABLE(::stat64(fn, &st), ret);
>> + if (ret == -1) {
>> + log("failed to find attach file: %s", fn);
>> + }
>> }
>>
>> All failure paths need to show us what it was that failed.
>>
>> typos: trigerred -> triggered
>>
>> Thanks,
>> David
>>
>>> -Dmitry
>>>
>>> On 2016-08-08 02:40, David Holmes wrote:
>>>> Hi Dmitry,
>>>>
>>>> On 5/08/2016 7:25 PM, Dmitry Samersoff wrote:
>>>>> Everybody,
>>>>>
>>>>> Please review the fix:
>>>>>
>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8157236/webrev.02/
>>>>>
>>>>> Problem:
>>>>> Tests fail intermittently because it can't attach to child process,
>>>>> these attach failures is hard to debug because attach framework
>>>>> doesn't provide enough diagnostic information.
>>>>>
>>>>> Solution:
>>>>>
>>>>> a) Increase attach timeout
>>>>> b) Slightly change attach loop to save a bit of CPU power.
>>>>> c) Add some logging to attach listener.
>>>>>
>>>>> It's just a first step in this direction. Complete cleanup of attach
>>>>> code (remove LinuxThreads support and convert all printing to UL) is
>>>>> not
>>>>> a goal of this fix - I'll file a separate CR for it.
>>>>
>>>> I still think you need more logging now to aid in debugging these cases.
>>>> In particular we want to be able to verify that the path of the attach
>>>> file is what we expect in all cases ie whether we find the .attach_pid
>>>> file in cwd or whether we are looking in temp directory, and whether we
>>>> ultimately succeed or fail.
>>>>
>>>> Plus whatever you do now should be done consistently for all platforms.
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>>> -Dmitry
>>>>>
>>>
>>>
>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
More information about the serviceability-dev
mailing list