lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dawid Weiss (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-4736) Some tests fail with IBM J9 due to strange TimerThread zombies that cannot be killed
Date Thu, 31 Jan 2013 13:27:13 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-4736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13567618#comment-13567618
] 

Dawid Weiss commented on LUCENE-4736:
-------------------------------------

It's one of those things that you just cannot predict. Ever.
{code}
[14:16:48.627] OK      0.10s | TestIndexWriterDelete.testDeleteAll
  1> Timer created by: Thread[SUITE-TestIndexWriterDelete-seed#[A22BC3E06CEC0036]-worker,5,TGRP-TestIndexWriterDelete]
  2> java.lang.Exception
  2>    at java.util.Timer$TimerImpl.<init>(Timer.java:189)
  2>    at java.util.Timer.<init>(Timer.java:355)
  2>    at java.util.prefs.FileSystemPreferences.<clinit>(FileSystemPreferences.java:424)
  2>    at java.lang.J9VMInternals.initializeImpl(Native Method)
  2>    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
  2>    at java.util.prefs.FileSystemPreferencesFactory.userRoot(FileSystemPreferencesFactory.java:35)
  2>    at java.util.prefs.Preferences.userRoot(Preferences.java:445)
  2>    at java.util.prefs.Preferences.userNodeForPackage(Preferences.java:359)
  2>    at com.ibm.crypto.pkcs11impl.provider.IBMPKCS11Impl.<init>(IBMPKCS11Impl.java:612)
  2>    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
  2>    at java.lang.Class.newInstance(Class.java:1345)
  2>    at org.apache.harmony.security.fortress.Services$1.run(Services.java:1116)
  2>    at org.apache.harmony.security.fortress.Services$1.run(Services.java:1113)
  2>    at java.security.AccessController.doPrivileged(AccessController.java:202)
  2>    at org.apache.harmony.security.fortress.Services.newInstance(Services.java:1113)
  2>    at org.apache.harmony.security.fortress.Services.access$800(Services.java:56)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.createProviderInstance(Services.java:342)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.createExtProviderInstance(Services.java:320)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.access$1200(Services.java:160)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices$3.run(Services.java:595)
  2>    at java.security.AccessController.doPrivileged(AccessController.java:202)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.loadExtProviders(Services.java:571)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.access$300(Services.java:160)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices$1.run(Services.java:203)
  2>    at java.security.AccessController.doPrivileged(AccessController.java:202)
  2>    at org.apache.harmony.security.fortress.Services$NormalServices.<clinit>(Services.java:198)
  2>    at java.lang.J9VMInternals.initializeImpl(Native Method)
  2>    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
  2>    at org.apache.harmony.security.fortress.Services.refresh(Services.java:1074)
  2>    at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:127)
  2>    at java.security.MessageDigest.getInstance(MessageDigest.java:75)
  2>    at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1829)
  2>    at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:64)
  2>    at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:220)
  2>    at java.security.AccessController.doPrivileged(AccessController.java:202)
  2>    at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:217)
  2>    at java.io.ObjectStreamClass.writeNonProxy(ObjectStreamClass.java:737)
  2>    at java.io.ObjectOutputStream.writeClassDescriptor(ObjectOutputStream.java:665)
  2>    at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1273)
  2>    at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1231)
  2>    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1310)
  2>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
  2>    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1537)
  2>    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
  2>    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1420)
  2>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
  2>    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1537)
  2>    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502)
  2>    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1420)
  2>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
  2>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
  2>    at com.carrotsearch.ant.tasks.junit4.events.mirrors.SerializableMirror.tryToSerialize(SerializableMirror.java:41)
  2>    at com.carrotsearch.ant.tasks.junit4.events.mirrors.SerializableMirror.<init>(SerializableMirror.java:16)
  2>    at com.carrotsearch.ant.tasks.junit4.events.mirrors.SerializableMirror.of(SerializableMirror.java:52)
  2>    at com.carrotsearch.ant.tasks.junit4.events.mirrors.FailureMirror.<init>(FailureMirror.java:29)
  2>    at com.carrotsearch.ant.tasks.junit4.events.FailureEvent.setFailure(FailureEvent.java:23)
  2>    at com.carrotsearch.ant.tasks.junit4.events.TestIgnoredAssumptionEvent.<init>(TestIgnoredAssumptionEvent.java:12)
  2>    at com.carrotsearch.ant.tasks.junit4.slave.RunListenerEmitter.testAssumptionFailure(RunListenerEmitter.java:68)
...
{code}

Object serialization attempt triggers UID calculation which creates a MessageDigest. This
goes deeply further into user prefs which then spawns a timer thread, presumably to refresh
the prefs periodically.

Your J9 is quite old and still contains Harmony's code. I checked with a newer version and
I can't reproduce this so I'm guessing they either changed the impl. or rely on system events
to refresh user prefs :)

We can probably filter out timer threads if running under J9?
                
> Some tests fail with IBM J9 due to strange TimerThread zombies that cannot be killed
> ------------------------------------------------------------------------------------
>
>                 Key: LUCENE-4736
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4736
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Michael McCandless
>
> EG:
> {noformat}
> ant test -Dtestcase=TestIndexWriterDelete -Dtests.seed=A22BC3E06CEC0036
> {noformat}
> Takes a while and then fails with this:
> {noformat}
> [junit4:junit4] ERROR   0.00s J2 | TestIndexWriterDelete (suite) <<<
> [junit4:junit4]    > Throwable #1:
> com.carrotsearch.randomizedtesting.ThreadLeakError: 1 thread leaked
> from SUITE scope at org.apache.lucene.index.TestIndexWriterDelete:
> [junit4:junit4]    >    1) Thread[id=102, name=Thread-44,
> state=TIMED_WAITING, group=TGRP-TestIndexWriterDelete]
> [junit4:junit4]    >         at java.lang.Object.wait(Native Method)
> [junit4:junit4]    >         at java.lang.Object.wait(Object.java:196)
> [junit4:junit4]    >         at java.util.Timer$TimerImpl.run(Timer.java:247)
> [junit4:junit4]    >    at __randomizedtesting.SeedInfo.seed([C9014BCB129899BF]:0)
> [junit4:junit4]    > Throwable #2:
> com.carrotsearch.randomizedtesting.ThreadLeakError: There are still
> zombie threads that couldn't be terminated:
> [junit4:junit4]    >    1) Thread[id=102, name=Thread-44,
> state=TIMED_WAITING, group=TGRP-TestIndexWriterDelete]
> [junit4:junit4]    >         at java.lang.Object.wait(Native Method)
> [junit4:junit4]    >         at java.lang.Object.wait(Object.java:196)
> [junit4:junit4]    >         at java.util.Timer$TimerImpl.run(Timer.java:247)
> [junit4:junit4]    >    at __randomizedtesting.SeedInfo.seed([C9014BCB129899BF]:0)
> {noformat}
> Java version is:
> {noformat}
> java version "1.6.0"
> Java(TM) SE Runtime Environment (build pxa6460sr9fp2ifix-20111111_05(SR9 FP2+IV03622+IV02378+IZ99243+IZ97310+IV00707))
> IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr9-20111111_94827
(JIT enabled, AOT enabled)
> J9VM - 20111111_094827
> JIT  - r9_20101028_17488ifx45
> GC   - 20101027_AA)
> JCL  - 20110727_04
> {noformat}
> Curiously, I think it tends to happen on a test that fails an assumption?  Or maybe I'm
just imagining that ...

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message