RFR(S): 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:48:43 UTC 2016
David,
> Thanks, this looks okay.
Thank you for review!
> Only minor concern is whether we have to
> apply casts to the results of geteuid() and st.st_uid when used with
> %d format specifier?
I didn't see any complains neither from jprt nor building locally.
uid_t is 4 byte type for both 32bit/64bit so I don't think we need to cast.
-Dmitry
On 2016-08-15 07:23, David Holmes wrote:
> On 12/08/2016 7:04 PM, Dmitry Samersoff wrote:
>> David,
>>
>> Updated webrev is:
>>
>> http://cr.openjdk.java.net/~dsamersoff/JDK-8157236/webrev.04/
>
> Thanks, this looks okay. Only minor concern is whether we have to
> apply casts to the results of geteuid() and st.st_uid when used with
> %d format specifier?
>
>> 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.
>
> Ok.
>
> Thanks, David
>
>> -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