[ 
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)

Reply via email to