StackOverflowError forwarding_stream.dart in _MultiControllerSink.add
davidpanic opened this issue · comments
This exception was reported to our sentry instance by some of our end user devices. Seems to me like it is caused by some internal rxdart logic, hence why I'm reporting it here. I have not had luck reproducing this - it's hard to do when the stacktrace doesn't even tell you where to look. I'm hoping you can help me out here, I'd like to know what conditions are needed to get this to occur.
We are using rxdart 0.27.7
.
Stacktrace (Click to show)
StackOverflowError: Stack Overflow
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
?, in ...
?, in ...
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_controller.dart", in _StreamController._add
File "stream_controller.dart", in _StreamController.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _BufferingStreamSubscription._add
File "stream_impl.dart", in _MultiStreamController.addSync
File "forwarding_stream.dart", in _MultiControllerSink.add
File "zone.dart", in _RootZone.runUnaryGuarded
File "stream_impl.dart", in _BufferingStreamSubscription._sendData
File "stream_impl.dart", in _DelayedData.perform
File "stream_impl.dart", in _PendingEvents.handleNext
File "stream_impl.dart", in _PendingEvents.schedule.<fn>
File "schedule_microtask.dart", in _microtaskLoop
File "schedule_microtask.dart", in _startMicrotaskLoop
I think that stack trace does not help much :(
I am experiencing a similar thing. I get a Stack overflow exception but my stack grace if a bit different. I am also struggling to reproduce this. What i did find out when it finally happened was that if i removed the StreamSubscriptions listening to the stream within my ReplaySubject, the Stack overflow exception went away. When i commented it in again the exception started to appear again
#0 Zone.current (dart:async/zone.dart:596:3)
#1 _runGuarded (dart:async/stream_controller.dart:817:10)
#2 _StreamController._subscribe.<anonymous closure> (dart:async/stream_controller.dart:694:7)
#3 _BufferingStreamSubscription._guardCallback (dart:async/stream_impl.dart:415:13)
#4 _StreamController._subscribe (dart:async/stream_controller.dart:693:18)
#5 _MultiStream.listen (dart:async/stream_impl.dart:1033:23)
#6 _forwardMulti.<anonymous closure>.listenToUpstream (package:rxdart/src/utils/forwarding_stream.dart:36:29)
#7 _forwardMulti.<anonymous closure> (package:rxdart/src/utils/forwarding_stream.dart:52:7)
#8 _MultiStream.listen.<anonymous closure> (dart:async/stream_impl.dart:1031:16)
#9 _runGuarded (dart:async/stream_controller.dart:815:24)
#10 _StreamController._subscribe.<anonymous closure> (dart:async/stream_controller.dart:694:7)
#11 _BufferingStreamSubscript<…>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Stack Overflow
#0 Zone.current (dart:async/zone.dart:596:3)
#1 _runGuarded (dart:async/stream_controller.dart:817:10)
#2 _StreamController._subscribe.<anonymous closure> (dart:async/stream_controller.dart:694:7)
#3 _BufferingStreamSubscription._guardCallback (dart:async/stream_impl.dart:415:13)
#4 _StreamController._subscribe (dart:async/stream_controller.dart:693:18)
#5 _MultiStream.listen (dart:async/stream_impl.dart:1033:23)
#6 _forwardMulti.<anonymous closure>.listenToUpstream (package:rxdart/src/utils/forwarding_stream.dart:36:29)
#7 _forwardMulti.<anonymous closure> (package:rxdart/src/utils/forwarding_stream.dart:52:7)
#8 _MultiStream.listen.<anonymous closure> (dart:async/stream_impl.dart:1031:16)
#9 _runGuarded (dart:async/stream_controller.dart:815:24)
#10 _StreamController._subscribe.<anonymous closure> (dart:async/stream_controller.dart:694:7)
#11 _BufferingStreamSubscript<…>
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: 'dart:async/stream_impl.dart': Failed assertion: line 336 pos 12: '<optimized out>': is not true.
#0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:51:61)
#1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:40:5)
#2 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:336:12)
#3 _DelayedData.perform (dart:async/stream_impl.dart:515:14)
#4 _PendingEvents.handleNext (dart:async/stream_impl.dart:620:11)
#5 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:591:7)
#6 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
#7 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: 'dart:async/stream_impl.dart': Failed assertion: line 336 pos 12: '!_inCallback': is not true.
#0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:51:61)
#1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:40:5)
#2 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:336:12)
#3 _DelayedData.perform (dart:async/stream_impl.dart:515:14)
#4 _PendingEvents.handleNext (dart:async/stream_impl.dart:620:11)
#5 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:591:7)
#6 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
#7 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
I think it's caused by adding to many events to the ReplaySubject, maybe a recursion :))