[
https://issues.apache.org/jira/browse/UIMA-6129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16938208#comment-16938208
]
li Gongrong commented on UIMA-6129:
-----------------------------------
Hi, not all right. Actually, the T2 is killed by the code
future.cancel(true);
And get function will block the main thread. So when i do select opreation, the
T2 is dead.
As far as I know, when we do select opreations UIMA will check the consistence
of the jcas index.
Followed is the error stack:
{code:java}
java.util.concurrent.TimeoutExceptionjava.util.concurrent.TimeoutException at
java.util.concurrent.FutureTask.get(FutureTask.java:205) at
com.test.uima.Main.main(Main.java:37)19726Finished selectException in thread
"main" java.util.ConcurrentModificationException at
org.apache.uima.cas.impl.FSIntIteratorImplBase.checkConcurrentModification(FSIntIteratorImplBase.java:67)
at org.apache.uima.cas.impl.IntIterator4sorted.get(IntIterator4sorted.java:95)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$PointerIterator.is_before(FSIndexRepositoryImpl.java:676)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$PointerIterator.heapify_up(FSIndexRepositoryImpl.java:721)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$PointerIterator.moveToFirst(FSIndexRepositoryImpl.java:815)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$PointerIterator.<init>(FSIndexRepositoryImpl.java:641)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$PointerIterator.<init>(FSIndexRepositoryImpl.java:570)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl.createPointerIterator(FSIndexRepositoryImpl.java:532)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$IndexImpl.nonFlatIterator(FSIndexRepositoryImpl.java:1716)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$IndexImpl.iterator(FSIndexRepositoryImpl.java:1701)
at
org.apache.uima.cas.impl.FSIndexRepositoryImpl$IndexImpl.iterator(FSIndexRepositoryImpl.java:1682)
at
org.apache.uima.cas.impl.AnnotationIndexImpl.iterator(AnnotationIndexImpl.java:104)
at org.apache.uima.fit.util.CasUtil.selectCovered(CasUtil.java:594) at
org.apache.uima.fit.util.JCasUtil.selectCovered(JCasUtil.java:367) at
com.test.uima.Main.main(Main.java:51)
{code}
it looks like some thread-safe code not release.
> The thread may deadlock if other thread interrupted which use jcas
> -------------------------------------------------------------------
>
> Key: UIMA-6129
> URL: https://issues.apache.org/jira/browse/UIMA-6129
> Project: UIMA
> Issue Type: Bug
> Components: UIMA
> Affects Versions: 2.10.4SDK
> Reporter: li Gongrong
> Priority: Major
>
> I use FutureTask to kill the thread spend a lot of time,but it will cause
> deadlock.
> {code:java}
> at sun.misc.Unsafe.park(Native Method)at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x000000070435e808> (a
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
> at
> org.apache.uima.jcas.impl.JCasHashMapSubMap.getReserve(JCasHashMapSubMap.java:303)
> at org.apache.uima.jcas.impl.JCasHashMap.getReserve(JCasHashMap.java:318) at
> org.apache.uima.jcas.impl.JCasImpl.getJfsFromCaddr(JCasImpl.java:1154) at
> org.apache.uima.jcas.impl.JCasImpl$JCasFsGenerator.createFS(JCasImpl.java:912)
> at
> org.apache.uima.jcas.impl.JCasImpl$JCasFsGenerator.createFS(JCasImpl.java:873)
> at org.apache.uima.cas.impl.CASImpl.ll_getFSForRef(CASImpl.java:3751) at
> org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:2231) at
> org.apache.uima.cas.impl.FSIteratorWrapper.get(FSIteratorWrapper.java:63) at
> org.apache.uima.cas.impl.FSIteratorAggregate.get(FSIteratorAggregate.java:76)
> at
> org.apache.uima.cas.impl.FSIteratorImplBase.next(FSIteratorImplBase.java:66)
> at
> org.apache.uima.cas.impl.FSIteratorImplBase.next(FSIteratorImplBase.java:32)
> {code}
> why ?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)