RFR(S): JDK-8054194 jstack crash: assert(handle != NULL) failed: JNI handle should not be null
Dmitry Samersoff
dmitry.samersoff at oracle.com
Tue Aug 26 15:25:13 UTC 2014
Serguei,
On 2014-08-26 14:58, serguei.spitsyn at 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.
> 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.
-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.samersoff at 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.
>
--
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