Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non-deterministic Hang - ExceptionsTest? #1536

Closed
benjchristensen opened this issue Jul 30, 2014 · 7 comments
Closed

Non-deterministic Hang - ExceptionsTest? #1536

benjchristensen opened this issue Jul 30, 2014 · 7 comments

Comments

@benjchristensen
Copy link
Member

Three builds have hung around the same place, near here:

  • rx.exceptions.ExceptionsTest > testStackOverflowIsThrown STANDARD_OUT
  • rx.exceptions.ExceptionsTest STANDARD_OUT

The logs can be seen at:

I have tried to replicate in the ExceptionsTest code but have not succeeded.

@benjchristensen benjchristensen added this to the 0.20 milestone Jul 30, 2014
@benjchristensen
Copy link
Member Author

Anyone able to reproduce this? I haven't been able to.

@benjchristensen
Copy link
Member Author

I let testStackOverflowIsThrown run in a loop for 20+ minutes without issue.

@benjchristensen
Copy link
Member Author

@benjchristensen
Copy link
Member Author

Happened again here: https://netflixoss.ci.cloudbees.com/job/RxJava-pull-requests/1489/consoleText

But this looks like it has more logs:

rx.exceptions.ExceptionsTest STANDARD_OUT
    2571

rx.exceptions.OnNextValueTest > addOnNextValueExceptionNotAddedWithBadString STANDARD_OUT
    On Error: java.lang.IllegalArgumentException: Failure while handling
        at rx.exceptions.OnNextValueTest$2.call(OnNextValueTest.java:101)
        at rx.exceptions.OnNextValueTest$2.call(OnNextValueTest.java:98)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:54)
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:41)
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:30)
        at rx.Observable$2.call(Observable.java:173)
        at rx.Observable$2.call(Observable.java:166)
        at rx.Observable.subscribe(Observable.java:8287)
        at rx.Observable.subscribe(Observable.java:8156)
        at rx.exceptions.OnNextValueTest.addOnNextValueExceptionNotAddedWithBadString(OnNextValueTest.java:97)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
        at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
        at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: BadToString.class
        at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:98)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:56)
        ... 47 more


rx.exceptions.OnNextValueTest > addOnNextValueExceptionAdded STANDARD_OUT
    On Error: java.lang.IllegalArgumentException: Failure while handling
        at rx.exceptions.OnNextValueTest$1.call(OnNextValueTest.java:87)
        at rx.exceptions.OnNextValueTest$1.call(OnNextValueTest.java:84)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:54)
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:41)
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:30)
        at rx.Observable$2.call(Observable.java:173)
        at rx.Observable$2.call(Observable.java:166)
        at rx.Observable.subscribe(Observable.java:8287)
        at rx.Observable.subscribe(Observable.java:8156)
        at rx.exceptions.OnNextValueTest.addOnNextValueExceptionAdded(OnNextValueTest.java:83)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
        at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
        at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: BadToString.class
        at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:98)
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:56)
        ... 47 more

Build timed out (after 40 minutes). Marking the build as aborted.

@benjchristensen
Copy link
Member Author

I can't replicate this and no one has reported this in prod/dev usage, only Cloudbees, so I'm moving this to 1.0 and not blocking 0.20 on this.

@benjchristensen benjchristensen modified the milestones: 1.x, 1.0 Sep 23, 2014
@akarnokd
Copy link
Member

akarnokd commented Feb 5, 2015

What happens is that a StackOverflowError is thrown but the check for it close (the stack is still next to full) so the attempt to report it may again cause another StackOverflowError. So instead of causing an actual StackOverflow, we could just throw one similar to how ThreadDeath is tested. Btw. assertFalse(isComputerOn())?

@akarnokd
Copy link
Member

akarnokd commented Sep 3, 2015

I haven't seen this failure a long time so closing.

@akarnokd akarnokd closed this as completed Sep 3, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants