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.


Reply via email to