Fix double plugin unload crash on meta retry
#204
Merged
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.
Prevent double plugin unload on
meta retry
if the plugin has failed to load on that retry attempt.Current retry logic checks for plugin load state after a call to
_Load
, and unloads the plugin if it failed to loadmetamod-source/core/metamod_plugins.cpp
Lines 303 to 329 in ccce734
But
_Load
method by itself checks for plugin load state and performs unload if it was unsuccessfulmetamod-source/core/metamod_plugins.cpp
Lines 599 to 604 in ccce734
This causes a double unload if a plugin has failed to load on that retry attempt, thus causing ReadyToUnload to be called twice, where on a second go, plugin_->m_Lib would be nullptr and results in a crash on linux
metamod-source/core/metamod_plugins.cpp
Lines 398 to 416 in ccce734
This pr both, removes the double unload on retry and adds a safeguard on dlclose in ReadyToUnload method to check for potential nullptr.