Skip to content

Hot reload crash when using the Restart button with unsaved changes #492

@DanTup

Description

@DanTup

Hot reload normally works fine, including on-save. However if I make changes to the stocks app (eg. change the theme colour) but do not save, then hit the Restart button on the toolbar, I get this crash.

My guess is that we're sending two hot reloads together or sending one immediately before we save the file (Code is calling Save in addition to sending the restartRequest).

Error 108 received from application: Isolate is reloading
Unhandled exception:
NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("type")
#0      Object._noSuchMethod (dart:core-patch/object_patch.dart:42)
#1      Object.noSuchMethod (dart:core-patch/object_patch.dart:46)
#2      HotRunner.validateReloadReport (package:flutter_tools/src/run_hot.dart:407)
#3      HotRunner._reloadSources.<anonymous closure> (package:flutter_tools/src/run_hot.dart:528)
#4      _rootRunUnary (dart:async/zone.dart:1128)
#5      _CustomZone.runUnary (dart:async/zone.dart:1012)
#6      _FutureListener.handleValue (dart:async/future_impl.dart:129)
#7      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636)
#8      _Future._propagateToListeners (dart:async/future_impl.dart:665)
#9      _Future._completeWithValue (dart:async/future_impl.dart:478)
#10     Future.wait.<anonymous closure> (dart:async/future.dart:392)
#11     _rootRunUnary (dart:async/zone.dart:1128)
#12     _CustomZone.runUnary (dart:async/zone.dart:1012)
#13     _FutureListener.handleValue (dart:async/future_impl.dart:129)
#14     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636)
#15     _Future._propagateToListeners (dart:async/future_impl.dart:665)
#16     _Future._complete (dart:async/future_impl.dart:468)
#17     _SyncCompleter.complete (dart:async/future_impl.dart:51)
#18     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:246)
#19     Isolate.reloadSources (package:flutter_tools/src/vmservice.dart:1047)
#20     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:30)
#21     _rootRunUnary (dart:async/zone.dart:1128)
#22     _CustomZone.runUnary (dart:async/zone.dart:1012)
#23     _FutureListener.handleValue (dart:async/future_impl.dart:129)
#24     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636)
#25     _Future._propagateToListeners (dart:async/future_impl.dart:665)
#26     _Future._complete (dart:async/future_impl.dart:468)
#27     _SyncCompleter.complete (dart:async/future_impl.dart:51)
#28     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:246)
#29     VM.invokeRpcRaw (package:flutter_tools/src/vmservice.dart:748)
#30     _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:37)
#31     _rootRunBinary (dart:async/zone.dart:1140)
#32     _CustomZone.runBinary (dart:async/zone.dart:1023)
#33     _FutureListener.handleError (dart:async/future_impl.dart:142)
#34     _Future._propagateToListeners.handleError (dart:async/future_impl.dart:648)
#35     _Future._propagateToListeners (dart:async/future_impl.dart:669)
#36     _Future._completeError (dart:async/future_impl.dart:486)
#37     _Future.timeout.<anonymous closure> (dart:async/future_impl.dart:739)
#38     _rootRunBinary (dart:async/zone.dart:1140)
#39     _CustomZone.runBinary (dart:async/zone.dart:1023)
#40     _FutureListener.handleError (dart:async/future_impl.dart:142)
#41     _Future._propagateToListeners.handleError (dart:async/future_impl.dart:648)
#42     _Future._propagateToListeners (dart:async/future_impl.dart:669)
#43     _Future._completeError (dart:async/future_impl.dart:486)
#44     _SyncCompleter._completeError (dart:async/future_impl.dart:55)
#45     _Completer.completeError (dart:async/future_impl.dart:27)
#46     Future.any.<anonymous closure> (dart:async/future.dart:454)
#47     _rootRunBinary (dart:async/zone.dart:1140)
#48     _CustomZone.runBinary (dart:async/zone.dart:1023)
#49     _FutureListener.handleError (dart:async/future_impl.dart:142)
#50     _Future._propagateToListeners.handleError (dart:async/future_impl.dart:648)
#51     _Future._propagateToListeners (dart:async/future_impl.dart:669)
#52     _Future._completeError (dart:async/future_impl.dart:486)
#53     _SyncCompleter._completeError (dart:async/future_impl.dart:55)
#54     _Completer.completeError (dart:async/future_impl.dart:27)
#55     Client._handleSingleResponse (package:json_rpc_2/src/client.dart:193)
#56     Client._handleResponse (package:json_rpc_2/src/client.dart:181)
#57     _rootRunUnary (dart:async/zone.dart:1128)
#58     _CustomZone.runUnary (dart:async/zone.dart:1012)
#59     _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#60     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#61     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#62     _StreamController&&_SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:796)
#63     _StreamController._add (dart:async/stream_controller.dart:667)
#64     _StreamController.add (dart:async/stream_controller.dart:613)
#65     Peer.listen.<anonymous closure> (package:json_rpc_2/src/peer.dart:91)
#66     _rootRunUnary (dart:async/zone.dart:1128)
#67     _CustomZone.runUnary (dart:async/zone.dart:1012)
#68     _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#69     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#70     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#71     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:132)
#72     _MapStream._handleData (dart:async/stream_pipe.dart:232)
#73     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:164)
#74     _rootRunUnary (dart:async/zone.dart:1128)
#75     _CustomZone.runUnary (dart:async/zone.dart:1012)
#76     _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#77     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#78     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#79     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:132)
#80     _ForwardingStream._handleData (dart:async/stream_pipe.dart:98)
#81     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:164)
#82     _rootRunUnary (dart:async/zone.dart:1128)
#83     _CustomZone.runUnary (dart:async/zone.dart:1012)
#84     _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#85     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#86     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#87     _StreamController&&_SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:796)
#88     _StreamController._add (dart:async/stream_controller.dart:667)
#89     _rootRunUnary (dart:async/zone.dart:1128)
#90     _CustomZone.runUnary (dart:async/zone.dart:1012)
#91     _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#92     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#93     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#94     _StreamController&&_SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:796)
#95     _StreamController._add (dart:async/stream_controller.dart:667)
#96     _StreamController.add (dart:async/stream_controller.dart:613)
#97     new _WebSocketImpl._fromSocket.<anonymous closure> (dart:io/websocket_impl.dart:1116)
#98     _rootRunUnary (dart:async/zone.dart:1128)
#99     _CustomZone.runUnary (dart:async/zone.dart:1012)
#100    _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#101    _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#102    _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#103    _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:68)
#104    _EventSinkWrapper.add (dart:async/stream_transformers.dart:15)
#105    _WebSocketProtocolTransformer._messageFrameEnd (dart:io/websocket_impl.dart:337)
#106    _WebSocketProtocolTransformer.add (dart:io/websocket_impl.dart:232)
#107    _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:120)
#108    _rootRunUnary (dart:async/zone.dart:1128)
#109    _CustomZone.runUnary (dart:async/zone.dart:1012)
#110    _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#111    _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#112    _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#113    _StreamController&&_SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:796)
#114    _StreamController._add (dart:async/stream_controller.dart:667)
#115    _StreamController.add (dart:async/stream_controller.dart:613)
#116    _Socket._onData (dart:io-patch/socket_patch.dart:1643)
#117    _rootRunUnary (dart:async/zone.dart:1132)
#118    _CustomZone.runUnary (dart:async/zone.dart:1012)
#119    _CustomZone.runUnaryGuarded (dart:async/zone.dart:909)
#120    _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330)
#121    _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257)
#122    _StreamController&&_SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:796)
#123    _StreamController._add (dart:async/stream_controller.dart:667)
#124    _StreamController.add (dart:async/stream_controller.dart:613)
#125    new _RawSocket.<anonymous closure> (dart:io-patch/socket_patch.dart:1228)
#126    _NativeSocket.issueReadEvent.issue (dart:io-patch/socket_patch.dart:784)
#127    _microtaskLoop (dart:async/schedule_microtask.dart:41)
#128    _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#129    _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:99)
#130    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:152)
Exited (255)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions