On 25 aug 2014, at 13:33, Dmitry Samersoff <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> 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.