Fix use-after-free in HTTP callbacks#19863
Closed
pranjalssh wants to merge 1 commit intoprestodb:masterfrom
Closed
Fix use-after-free in HTTP callbacks#19863pranjalssh wants to merge 1 commit intoprestodb:masterfrom
pranjalssh wants to merge 1 commit intoprestodb:masterfrom
Conversation
Summary: In the HTTPClient, callbacks are scheduled on an eventBase. HTTPClient is kept alive using a shared_ptr, but it contains a raw pointer to MemoryPool. This MemoryPool may be freed if Task is aborted earlier, but a callback is executed much later. We see crashes related to this when the batch cluster is under heavy load. So the fix here is to keep shared_ptr to MemoryPool isntead of a raw pointer Differential Revision: D46672533 fbshipit-source-id: 1675b6f983c98bb66081d0b668588f975f3f2f05
Collaborator
|
This pull request was exported from Phabricator. Differential Revision: D46672533 |
pranjalssh
added a commit
to pranjalssh/presto
that referenced
this pull request
Jun 14, 2023
Summary: In the HTTPClient, callbacks are scheduled on an eventBase. HTTPClient is kept alive using a shared_ptr, but it contains a raw pointer to MemoryPool. This MemoryPool may be freed if Task is aborted earlier, but a callback is executed much later. We see crashes related to this when the batch cluster is under heavy load. So the fix here is to keep shared_ptr to MemoryPool isntead of a raw pointer ``` == NO RELEASE NOTE == ``` Pull Request resolved: prestodb#19865 Reviewed By: xiaoxmeng Differential Revision: D46674355 Pulled By: pranjalssh fbshipit-source-id: 9b53deb6357ff87b8e1a992f3205d0ce9d79c05c
pranjalssh
added a commit
that referenced
this pull request
Jun 15, 2023
Summary: In the HTTPClient, callbacks are scheduled on an eventBase. HTTPClient is kept alive using a shared_ptr, but it contains a raw pointer to MemoryPool. This MemoryPool may be freed if Task is aborted earlier, but a callback is executed much later. We see crashes related to this when the batch cluster is under heavy load. So the fix here is to keep shared_ptr to MemoryPool isntead of a raw pointer ``` == NO RELEASE NOTE == ``` Pull Request resolved: #19865 Reviewed By: xiaoxmeng Differential Revision: D46674355 Pulled By: pranjalssh fbshipit-source-id: 9b53deb6357ff87b8e1a992f3205d0ce9d79c05c
28 tasks
wypb
pushed a commit
to wypb/presto
that referenced
this pull request
Dec 22, 2023
Summary: In the HTTPClient, callbacks are scheduled on an eventBase. HTTPClient is kept alive using a shared_ptr, but it contains a raw pointer to MemoryPool. This MemoryPool may be freed if Task is aborted earlier, but a callback is executed much later. We see crashes related to this when the batch cluster is under heavy load. So the fix here is to keep shared_ptr to MemoryPool isntead of a raw pointer ``` == NO RELEASE NOTE == ``` Pull Request resolved: prestodb#19865 Reviewed By: xiaoxmeng Differential Revision: D46674355 Pulled By: pranjalssh fbshipit-source-id: 9b53deb6357ff87b8e1a992f3205d0ce9d79c05c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary:
In the HTTPClient, callbacks are scheduled on an eventBase. HTTPClient is kept alive using a shared_ptr, but it contains a raw pointer to MemoryPool. This MemoryPool may be freed if Task is aborted earlier, but a callback is executed much later.
We see crashes related to this when the batch cluster is under heavy load.
So the fix here is to keep shared_ptr to MemoryPool isntead of a raw pointer
Differential Revision: D46672533