Closed frederikaalund closed 6 years ago
Thanks, I will look into this.
That looks very similar to #184
Really easy to reproduce:
import rx
obs = rx.Observable.range(0, 20000)
# obs = obs.replay(None, 1).ref_count() # Uncomment for triggering RuntimeError: maximum recursion depth exceeded
a = list(obs.last().to_blocking())[0]
print(a)
The issue is between ReplaySubject, ScheduledObserver and CurrentThreadScheduler
In the example if you change the replay's scheduler by immediate scheduler, it works
I've pushed a new version (1.6.1) of Rx. Please check if it fixes this issue.
@diorcety Great work hunting down this bug and making it reproducible. Cheers! Using your code sample, the bug does indeed seem to be solved.
I've pushed a new version (1.6.1) of Rx. Please check if it fixes this issue.
Thanks for that. I'm really glad to see that issue resolved. I've updated our build system to track 44081a1bba8e897768a22da2ae0580456ff13285 (should be 1.6.1; I couldn't find a tag for this release). We will be using this version going forward. I'll reopen the issue if the error reappears (though I'm feeling confident that it should be solved now).
Indeed the 1.6.1 version fixes the issue
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
I'm using an unbounded
ReplaySubject
where scheduler is the
AsyncIOScheduler
.When I push values to
self.detect_results
I sometimes get an exception (see log output below). This exception occurs very rarely (approximately once for every 100000
on_next
calls).Everything is running on the same thread. I'm using AsyncIO for all scheduling; making sure to pass along the
scheduler
for all scheduler-enabled RxPy operators.I'm using RxPy v1.5.9.
Raw log:
Looks like inifinite recursion in the
dispose
method. Could two disposables be trying to dispose each other in a cycle?