On 8/26/14 8:25 AM, Dmitry Samersoff wrote:
Serguei,

On 2014-08-26 14:58, serguei.spit...@oracle.com wrote:
Dmitry,

I doubt, this webrev fixes the issue.
At least, I can't see it yet.

It looks like the assert is because the imagePath_ID or symbolPath_ID
were not initialized properly.
If imagePath_ID or symbolPath_ID is NULL we get a crash, not assert.

Assert happens if (and only if) path is NULL on call to
env->GetStringUTFChars(path, &isCopy); at ll. 316, 321

I verified it manually by setting these variables to different values.

Nice.
But how do we get path == null from one of the statements below ?
Is it because of the clazz value?

  path = (jstring) env->GetStaticObjectField(clazz, imagePath_ID);
  buf = env->GetStringUTFChars(path, &isCopy); <======== ???
  CHECK_EXCEPTION_(false);
  AutoJavaString imagePath(env, path, buf);

  path = (jstring) env->GetStaticObjectField(clazz, symbolPath_ID);
  buf = env->GetStringUTFChars(path, &isCopy); <======== ???
  CHECK_EXCEPTION_(false);


But there is no clear explanation yet how this could happen.
Maybe, the conclusion above was wrong, but some prove is needed and/or
another possible root cause.

Also, Staffan is right, about killing the remote process.
The remote process has no relation to the fix.
I can reproduce the problem (intermittently, once in couple of hours) by
two scripts running in two separate windows - first script runs and
kills Java2D demo second one runs jps and jstack -F against Java2D demo.

After the fix, problem is not reproducible anymore.

But I'll put more efforts to understand what is going wrong with jstack
process.

Good.

Thanks,
Serguei


-Dmitry

Thanks,
Serguei


On 8/25/14 3:58 AM, Staffan Larsen wrote:
Dmitry,

Your changes look good (except missing spaces after commas). But what I do not 
understand is how this relates to the bug. The code in setImageAndSymbolPath() 
is not looking at the remote process, it’s just setting up data in the jstack 
process. How does killing the remote process affect this code? What am I 
missing?

/Staffan

On 21 aug 2014, at 14:56, Dmitry Samersoff <dmitry.samers...@oracle.com> wrote:

Hi Everyone,

Please review small agent changes:

http://cr.openjdk.java.net/~dsamersoff/JDK-8054194/webrev.01/

Under windows, If jstack attempts to attach to java process that is
being killed by someone else, GetStaticObjectField might return NULL.

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


Reply via email to