[ 
https://issues.apache.org/jira/browse/DERBY-4987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12988260#action_12988260
 ] 

Kathey Marsden commented on DERBY-4987:
---------------------------------------

So I was able to reproduce this with the IBM JVM on linux with
IBM_JAVA_OPTIONS=-Xgcpolicy:optthruput -Xnoquickstart -Xjit 

which makes the jvm start very slowly so BootLockMinion does not complete it's 
work in the 60 seconds granted.  BootLockTest tries to read the standard err 
before killing the process but this blocks because BootLockMinion is still 
running, sleeping, waiting to be killed by BootLockTest.

The logic needs to be adjusted to not attempt to get the standard err output if 
the process is still running and also 60 seconds seems to be not long enough in 
some modes.

It might also be good to have BootLockMinion give up at some point too.





> BootLockTest can hang reading spawned process output
> ----------------------------------------------------
>
>                 Key: DERBY-4987
>                 URL: https://issues.apache.org/jira/browse/DERBY-4987
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.5.3.0, 10.8.0.0
>            Reporter: Kathey Marsden
>
> Dag reported in this thread that he saw a BootLockTest hang:
> http://mail-archives.apache.org/mod_mbox/db-derby-dev/201012.mbox/%[email protected]%3E
> with trace:
> java.lang.Thread.State: RUNNABLE
>       at java.io.FileInputStream.readBytes(Native Method)
>       at java.io.FileInputStream.read(FileInputStream.java:199)
>       at 
> java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:227)
>       at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
>       at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
>       at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
>       - locked <0xc16a42d0> (a java.io.InputStreamReader)
>       at java.io.InputStreamReader.read(InputStreamReader.java:167)
>       at java.io.BufferedReader.fill(BufferedReader.java:136)
>       at java.io.BufferedReader.readLine(BufferedReader.java:299)
>       - locked <0xc16a42d0> (a java.io.InputStreamReader)
>       at java.io.BufferedReader.readLine(BufferedReader.java:362)
>       at 
> org.apache.derbyTesting.functionTests.tests.store.BootLockTest.waitForMinionBoot(BootLockTest.java:209)
>       at 
> org.apache.derbyTesting.functionTests.tests.store.BootLockTest.testBootLock(BootLockTest.java:131)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at junit.framework.TestCase.runTest(TestCase.java:164)
>       at junit.framework.TestCase.runBare(TestCase.java:130)
>       at 
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:109)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:120)
>       at junit.framework.TestSuite.runTest(TestSuite.java:230)
>       at junit.framework.TestSuite.run(TestSuite.java:225)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.extensions.TestSetup.run(TestSetup.java:25)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.extensions.TestSetup.run(TestSetup.java:25)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.extensions.TestSetup.run(TestSetup.java:25)
>       at junit.framework.TestSuite.runTest(TestSuite.java:230)
>       at junit.framework.TestSuite.run(TestSuite.java:225)
>       at junit.framework.TestSuite.runTest(TestSuite.java:230)
>       at junit.framework.TestSuite.run(TestSuite.java:225)
>       at kah.TestRunner.main(TestRunner.java:77)
> I had a recent report of a hang in BootLockTest with a prereleaseJVM with a 
> slightly different trace.
> XMTHREADINFO      "main" J9VMThread:0x08077400, 
> j9thread_t:0x08059C94, java/lang/Thread:0xD64B3CB0, state:CW, 
> prio=5
> 3XMTHREADINFO1            (native thread ID:0x43F6, native 
> priority:0x5, native policy:UNKNOWN)
> 3XMTHREADINFO2            (native stack address range 
> from:0xF6C9B000, to:0xF749C000, size:0x801000)
> 3XMTHREADINFO3           Java callstack:
> 4XESTACKTRACE                at java/lang/Object.wait(Native 
> Method)
> 4XESTACKTRACE                at 
> java/lang/Object.wait(Object.java:196(Compiled Code))
> 4XESTACKTRACE                at 
> java/io/PipedInputStream.read(PipedInputStream.java:288(Compiled
>  Code))
> 4XESTACKTRACE                at 
> java/lang/ProcessPipedInputStream.read(UNIXProcess.java:403)
> 4XESTACKTRACE                at 
> java/io/PipedInputStream.read(PipedInputStream.java:361(Compiled
>  Code))
> 4XESTACKTRACE                at 
> java/lang/ProcessInputStream.read(UNIXProcess.java:484)
> 4XESTACKTRACE                at 
> sun/nio/cs/StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:
> 452)
> 4XESTACKTRACE                at 
> sun/nio/cs/StreamDecoder$CharsetSD.implRead(StreamDecoder.java:4
> 94(Compiled Code))
> 4XESTACKTRACE                at 
> sun/nio/cs/StreamDecoder.read(StreamDecoder.java:222)
> 4XESTACKTRACE                at 
> java/io/InputStreamReader.read(InputStreamReader.java:177)
> 4XESTACKTRACE                at 
> java/io/BufferedReader.fill(BufferedReader.java:136(Compiled 
> Code))
> 4XESTACKTRACE                at 
> java/io/BufferedReader.readLine(BufferedReader.java:299(Compiled
>  Code))
> 4XESTACKTRACE                at 
> java/io/BufferedReader.readLine(BufferedReader.java:362(Compiled
>  Code))
> 4XESTACKTRACE                at 
> org/apache/derbyTesting/functionTests/tests/store/BootLockTest.w
> aitForMinionBoot(BootLockTest.java:175(Compiled Code))
> 4XESTACKTRACE                at 
> org/apache/derbyTesting/functionTests/tests/store/BootLockTest.t
> estBootLock(BootLockTest.java:131)
> 4XESTACKTRACE                at 
> sun/reflect/NativeMethodAccessorImpl.invoke0(Native Method)
> 4XESTACKTRACE                at 
> sun/reflect/NativeMethodAccessorImpl.invoke(NativeMethodAccessor
> Impl.java:48)
> 4XESTACKTRACE                at 
> sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethod
> AccessorImpl.java:25)
> 4XESTACKTRACE                at 
> java/lang/reflect/Method.invoke(Method.java:600)
> 4XESTACKTRACE                at 
> junit/framework/TestCase.runTest(TestCase.java:154)
> 4XESTACKTRACE                at 
> junit/framework/TestCase.runBare(TestCase.java:127)
> 4XESTACKTRACE                at 
> org/apache/derbyTesting/junit/BaseTestCase.runBare(BaseTestCase.
> java:109)
> 4XESTACKTRACE                at 
> junit/framework/TestResult$1.protect(TestResult.java:106)
> 4XESTACKTRACE                at 
> junit/framework/TestResult.runProtected(TestResult.java:124)
> 4XESTACKTRACE                at 
> junit/framework/TestResult.run(TestResult.java:109)
> 4XESTACKTRACE                at 
> junit/framework/TestCase.run(TestCase.java:118)
> 4XESTACKTRACE                at 
> junit/framework/TestSuite.runTest(TestSuite.java:208(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/framework/TestSuite.run(TestSuite.java:199(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/extensions/TestDecorator.basicRun(TestDecorator.java:22)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup$1.protect(TestSetup.java:19)
> 4XESTACKTRACE                at 
> junit/framework/TestResult.runProtected(TestResult.java:124)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup.run(TestSetup.java:23)
> 4XESTACKTRACE                at 
> org/apache/derbyTesting/junit/BaseTestSetup.run(BaseTestSetup.ja
> va:57)
> 4XESTACKTRACE                at 
> junit/extensions/TestDecorator.basicRun(TestDecorator.java:22)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup$1.protect(TestSetup.java:19)
> 4XESTACKTRACE                at 
> junit/framework/TestResult.runProtected(TestResult.java:124)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup.run(TestSetup.java:23)
> 4XESTACKTRACE                at 
> junit/extensions/TestDecorator.basicRun(TestDecorator.java:22)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup$1.protect(TestSetup.java:19)
> 4XESTACKTRACE                at 
> junit/framework/TestResult.runProtected(TestResult.java:124)
> 4XESTACKTRACE                at 
> junit/extensions/TestSetup.run(TestSetup.java:23)
> 4XESTACKTRACE                at 
> junit/framework/TestSuite.runTest(TestSuite.java:208(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/framework/TestSuite.run(TestSuite.java:199(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/textui/TestRunner.doRun(TestRunner.java:116(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/textui/TestRunner.start(TestRunner.java:157(Compiled 
> Code))
> 4XESTACKTRACE                at 
> junit/textui/TestRunner.main(TestRunner.java:138)
> Need to take a look at the stability of this test regarding reading the 
> process output.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to