Prevent underflow in memcached_*_response_decrement macros
#124
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.
Hello, we ran into a case where
instance->cursor_active_underflows here:libmemcached/src/libmemcached/response.cc
Line 748 in bcc1a6e
leading to a near-infinite loop here:
libmemcached/src/libmemcached/get.cc
Lines 190 to 192 in bcc1a6e
It seems to occur once every couple hours on a staging host under Apache 2.4 and PHP 7.3 against memcached 1.6.6. We weren't able to pinpoint the exact conditions to reproduce, nor the source of the bug. Maybe a missing
memcached_*_response_incrementor memory corruption?This appears to be a regression from 1.0.18 which we were running previously.
The patch mitigates but doesn't fix the bug.