Serguei, Fixed (in-place, press shift reload)
-Dmitry On 2014-08-27 12:12, serguei.spit...@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.spit...@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.spit...@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.spit...@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.samers...@oracle.com >>>>>>>> <mailto:dmitry.samers...@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.samers...@oracle.com >>>>>>>>>> <mailto:dmitry.samers...@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.spit...@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.spit...@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.