[
https://issues.apache.org/jira/browse/IGNITE-1884?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Tupitsyn updated IGNITE-1884:
------------------------------------
Description:
Documentation:
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
{code}
Local references are only valid in the thread in which they are created. The
native code must not pass local references from one thread to another.
{code}
We have two places where we DO pass local JNI reference to another thread:
* CacheParallelLoadStoreAdapter
* CacheTestStore.LoadCache
And, potentially (due to user code):
* UnmanagedCallbacks.DataStreamerStreamReceiverInvoke
For some reason it has worked for us before.
But renamings in IGNITE-1881 have caused test execution order to change, and
these store tests cause process crash.
To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be
executed before store tests. All other tests can be excluded. 100% repro rate:
"FATAL ERROR in native method: Bad global or local ref passed to JNI".
was:
Documentation:
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
{code}
Local references are only valid in the thread in which they are created. The
native code must not pass local references from one thread to another.
{code}
We have two places where we DO pass local JNI reference to another thread:
* CacheParallelLoadStoreAdapter
* CacheTestStore.LoadCache
For some reason it has worked for us before.
But renamings in IGNITE-1881 have caused test execution order to change, and
these store tests cause process crash.
To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be
executed before store tests. All other tests can be excluded. 100% repro rate:
"FATAL ERROR in native method: Bad global or local ref passed to JNI".
> .Net: JNI local ref can't be accessed from another thread
> ---------------------------------------------------------
>
> Key: IGNITE-1884
> URL: https://issues.apache.org/jira/browse/IGNITE-1884
> Project: Ignite
> Issue Type: Bug
> Components: interop
> Affects Versions: 1.1.4
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Blocker
> Fix For: 1.5
>
>
> Documentation:
> https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
> {code}
> Local references are only valid in the thread in which they are created. The
> native code must not pass local references from one thread to another.
> {code}
> We have two places where we DO pass local JNI reference to another thread:
> * CacheParallelLoadStoreAdapter
> * CacheTestStore.LoadCache
> And, potentially (due to user code):
> * UnmanagedCallbacks.DataStreamerStreamReceiverInvoke
> For some reason it has worked for us before.
> But renamings in IGNITE-1881 have caused test execution order to change, and
> these store tests cause process crash.
> To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be
> executed before store tests. All other tests can be excluded. 100% repro
> rate: "FATAL ERROR in native method: Bad global or local ref passed to JNI".
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)