RFR(S): URG! JDK-8049226 com/sun/jdi/OptionTest.java test times out again

Dmitry Samersoff dmitry.samersoff at oracle.com
Wed Aug 27 10:51:23 UTC 2014


Serguei,

Fixed (in-place, press shift reload)

-Dmitry


On 2014-08-27 14:25, serguei.spitsyn at oracle.com wrote:
> One more minor comment.
> The indent in this file must be 4.
> Could you fix it?
> 
> Thanks,
> Serguei
> 
> On 8/27/14 2:03 AM, Dmitry Samersoff wrote:
>> Serguei,
>>
>> Fixed (in-place, press shift reload)
>>
>> -Dmitry
>>
>>
>> On 2014-08-27 12:12, serguei.spitsyn at oracle.com wrote:
>>> 1284     enum exit_codes { EXIT_NO_ERRORS = 0, EXIT_TRANSPORT_ERROR,
>>> EXIT_JVMTI_ERROR };
>>>
>>>
>>> I'd suggest to swap the  positions of EXIT_TRANSPORT_ERROR and
>>> EXIT_JVMTI_ERROR
>>> in the enum to keep this as compatible to previous behavior as possible.
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>>
>>> On 8/27/14 1:08 AM, serguei.spitsyn at oracle.com wrote:
>>>> This looks good.
>>>>
>>>> Could you, please, remove extra spaces in the following conditions ?:
>>>>
>>>> 1291     if (error != JVMTI_ERROR_NONE && docoredump ) {
>>>> 1302         if ( gdata->jvmti != NULL ) {
>>>> 1309     if ( error == JVMTI_ERROR_NONE ) {
>>>>
>>>> Thanks,
>>>> Serguei
>>>>
>>>>
>>>> On 8/27/14 12:36 AM, Dmitry Samersoff wrote:
>>>>> Serguei,
>>>>>
>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8049226/webrev.04/
>>>>>
>>>>> I refactored the debugInit_exit function.
>>>>>
>>>>> Now we have separate exit code for transport error and better readable
>>>>> code.
>>>>>
>>>>> -Dmitry
>>>>>
>>>>>
>>>>> On 2014-08-27 00:22, serguei.spitsyn at oracle.com wrote:
>>>>>> Dmitry,
>>>>>>
>>>>>> It makes sense to consider a special exit code for transport init
>>>>>> error.
>>>>>> Other than that it looks good.
>>>>>> No need to re-review.
>>>>>>
>>>>>> Thanks,
>>>>>> Serguei
>>>>>>
>>>>>> On 8/26/14 10:46 AM, Dmitry Samersoff wrote:
>>>>>>> Serguei,
>>>>>>>
>>>>>>> exit_code set to 1 at ll. 1288
>>>>>>>
>>>>>>> I thought of refactoring this code for better readability but
>>>>>>> finally
>>>>>>> decide to keep changes minimal.
>>>>>>>
>>>>>>> -Dmitry
>>>>>>>
>>>>>>>
>>>>>>> On 2014-08-26 21:35, serguei.spitsyn at oracle.com wrote:
>>>>>>>> Dmitry,
>>>>>>>>
>>>>>>>> This looks good in general.
>>>>>>>> But what error code will be returned in the case of
>>>>>>>> AGENT_ERROR_TRANSPORT_INIT ?
>>>>>>>> Is it Ok to return whatever exit_code we already have or we better
>>>>>>>> return some special error code?
>>>>>>>>
>>>>>>>> Probably, it is Ok to keep the comment at the line 1315 as it is.
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Serguei
>>>>>>>>
>>>>>>>> On 8/26/14 7:47 AM, Dmitry Samersoff wrote:
>>>>>>>>> Staffan,
>>>>>>>>>
>>>>>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8049226/webrev.03/
>>>>>>>>>
>>>>>>>>> After couple of experiments I end up with simple fix - don't
>>>>>>>>> coredump on
>>>>>>>>> AGENT_ERROR_TRANSPORT_INIT
>>>>>>>>>
>>>>>>>>> Current code don't propagate transport error to upper level, so
>>>>>>>>> if we
>>>>>>>>> need fine grained control I'll rewrite transport initialization.
>>>>>>>>>
>>>>>>>>> -Dmitry
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 2014-08-25 15:53, Staffan Larsen wrote:
>>>>>>>>>> On 25 aug 2014, at 13:33, Dmitry Samersoff
>>>>>>>>>> <dmitry.samersoff at oracle.com
>>>>>>>>>> <mailto:dmitry.samersoff at oracle.com>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Staffan,
>>>>>>>>>>>
>>>>>>>>>>> On 2014-08-25 15:26, Staffan Larsen wrote:
>>>>>>>>>>>> Dmitry,
>>>>>>>>>>>>
>>>>>>>>>>>> One problem with this fix is that debugInit_exit() is used
>>>>>>>>>>>> from many
>>>>>>>>>>>> places in the JDWP code. For some of these I think it still
>>>>>>>>>>>> does
>>>>>>>>>>>> make
>>>>>>>>>>>> sense to receive a core dump for analysis. I agree that when
>>>>>>>>>>>> parsing
>>>>>>>>>>>> options, we do not need a core dump.
>>>>>>>>>>> jdwp has explicit option to request a coredump at
>>>>>>>>>>> debugInit_exit().
>>>>>>>>>>>
>>>>>>>>>>> Is it enough or I should create a more sophisticated fix ?
>>>>>>>>>> I don’t think that is enough. Often a problem will happen and
>>>>>>>>>> will not
>>>>>>>>>> be reproducible.
>>>>>>>>>>
>>>>>>>>>> Maybe this code:
>>>>>>>>>>
>>>>>>>>>>       if ((arg.error != JDWP_ERROR(NONE)) &&
>>>>>>>>>>           (arg.startCount == 0) &&
>>>>>>>>>>           initOnStartup) {
>>>>>>>>>>           EXIT_ERROR(map2jvmtiError(arg.error), "No transports
>>>>>>>>>> initialized");
>>>>>>>>>>       }
>>>>>>>>>>
>>>>>>>>>> can use some variant of EXIT_ERROR that does not call
>>>>>>>>>> fatalError() ?
>>>>>>>>>>
>>>>>>>>>> /Staffan
>>>>>>>>>>
>>>>>>>>>>> Actually, I don't think that coredump on every call to
>>>>>>>>>>> jni_FatalError()
>>>>>>>>>>> (see jni.cpp:726) is necessary but this hotspot code is here
>>>>>>>>>>> for 6
>>>>>>>>>>> years
>>>>>>>>>>> and changing it probably out of scope of this fix.
>>>>>>>>>>>
>>>>>>>>>>> -Dmitry
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> /Staffan
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On 20 aug 2014, at 17:55, Dmitry Samersoff
>>>>>>>>>>>> <dmitry.samersoff at oracle.com
>>>>>>>>>>>> <mailto:dmitry.samersoff at oracle.com>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Serguei,
>>>>>>>>>>>>>
>>>>>>>>>>>>> After some additional testing I changed the fix a bit.
>>>>>>>>>>>>> Please take
>>>>>>>>>>>>> a look at new version.
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8049226/webrev.02/
>>>>>>>>>>>>>
>>>>>>>>>>>>> New version reports JVMTI error to stderr.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Also jniFatalError is not referenced any more so I remove it.
>>>>>>>>>>>>>
>>>>>>>>>>>>> -Dmitry
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 2014-08-20 12:08, serguei.spitsyn at oracle.com wrote:
>>>>>>>>>>>>>> Ok.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thank you for the explanation! Serguei
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 8/20/14 1:01 AM, Dmitry Samersoff wrote:
>>>>>>>>>>>>>>> Serguei,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1. Historically JDI test-suite had no tests for failed
>>>>>>>>>>>>>>> transport initialization behavior and invalid parameters
>>>>>>>>>>>>>>> handling.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2. As a part of JDWP hardening work I added couple of such
>>>>>>>>>>>>>>> tests to OptionTest.java - these tests pass invalid
>>>>>>>>>>>>>>> parameters
>>>>>>>>>>>>>>> to dt_socket transport to make sure that transport doesn't
>>>>>>>>>>>>>>> crash (one such crash was discovered and fixed) but just
>>>>>>>>>>>>>>> return
>>>>>>>>>>>>>>> non-zero exit code to upper level.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 3. After fix for JDK-6694099 any non-zero exit code from
>>>>>>>>>>>>>>> transport cause VM to coredump. Dumping multiple cores on
>>>>>>>>>>>>>>> busy
>>>>>>>>>>>>>>> machine takes a time so harness kills the test by timeout.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> We can just increase timeout for this test but I don't think
>>>>>>>>>>>>>>> it's a good idea to dump core when invalid parameters
>>>>>>>>>>>>>>> passed to
>>>>>>>>>>>>>>> transport.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> So there is the fix.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 4. After the fix tests for negative parameters will return
>>>>>>>>>>>>>>> non-zero exit code as expected but will not dump the core.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -Dmitry
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 2014-08-20 00:54, serguei.spitsyn at oracle.com wrote:
>>>>>>>>>>>>>>>> Hi Dmitry,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The fix seems to be Ok. Just want to make it clear... This
>>>>>>>>>>>>>>>> fix just changes the bug pattern. It a case of incorrect
>>>>>>>>>>>>>>>> transport parameters the test is still going to fail but
>>>>>>>>>>>>>>>> without crash, right?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks, Serguei
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 8/19/14 12:09 PM, Dmitry Samersoff wrote:
>>>>>>>>>>>>>>>>> Hi Everybody,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Please review the fix:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8049226/webrev.01/
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>> JDWP call jniFatalError if transport can't be initialized
>>>>>>>>>>> (e.g. wrong
>>>>>>>>>>>>>>>>> parameters) and jniFatalError call os::abort().  Therefor
>>>>>>>>>>>>>>>>> all transport initialization errors cause vm to coredump.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> I see no reason for debugInit_exit to call
>>>>>>>>>>>>>>>>> jniFatalError so
>>>>>>>>>>>>>>>>> remove this code.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> -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.
>>>>>>>>>>> -- 
>>>>>>>>>>> Dmitry Samersoff
>>>>>>>>>>> Oracle Java development team, Saint Petersburg, Russia
>>>>>>>>>>> * I would love to change the world, but they won't give me the
>>>>>>>>>>> sources.
>>
> 


-- 
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