Fix potential use-after-free of Connection from Asio thread #1103
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A segmentation fault occurs under certain conditions when stopping a crow app that uses websocket.
I am unable to provide minimal reproduction code, but it appears to be related to the timing of closing the websocket connection.
The stack trace is below.
Running git bisect, I found that this segmentation fault started occurring from #1080 onwards.
In #1080 the timing of destroying the Connection object changed, so I thought it was likely caused by accessing a Connection object after it had been destroyed.
There were places where the Connection object was captured as
this
despite being a shared_ptr, so I added a capture of shared_from_this() and the segmentation fault no longer occurred.