I experienced the same problem a few days ago with Sanic 19.3.1 and Python 3.6.7, so far it had happened only one time. Most unfortunate was that this occurred in production, in a weekend. The server was started using app.create_server, listening on HTTPS. The server was unable to handle any other requests after the error, returning status 500 ECONNRESET.
I wonder if it would be a better behavior to raise an exception and let the server die. This way at least the process manager can restart the server instead of it being stuck.
With the logging library set at logging.NOTSET, the following was the only output I got. There was no second line of logger.debug message. 02:58:52 was the time of the last-handled user request. The error handler function decorated with @app.exception([SanicException, Exception]) was not called. There were no further logs thereafter.
… [Other normal logs]
2019-07-13 02:58:52,237 [MainThread ] [INFO ] Response sent. # Logged from @app.middleware(‘response’)
2019-07-13 02:58:52,238 [MainThread ] [INFO ]
2019-07-13 02:58:52,238 [MainThread ] [INFO ] PID: 34 | Memory usage: 739.6796875MB.
2019-07-13 02:58:52,238 [MainThread ] [INFO ]
2019-07-13 02:58:52,239 [MainThread ] [INFO ] ====================================================
2019-07-13 02:58:52,239 [MainThread ] [INFO ]
2019-07-13 02:58:52,239 [MainThread ] [INFO ]
2019-07-13 03:01:34,002 [MainThread ] [ERROR] Transport closed @ (IP, NUMBER) and exception experienced during error handling
2019-07-13 03:01:34,009 [MainThread ] [INFO ]
Update: Encountered a similar error. This time we have a coroutine not awaited message, as pointed out in the sister thread here.