Details
-
Bug
-
Resolution: Fixed
-
Critical
-
6.0.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, Cheshire-Cat
-
Triaged
-
1
-
Unknown
-
KV-Engine Sprint 2021 June
Description
If memcached is processing a packet with an unknown opcode it is possible if conditions are right for the handling of an exception to then lead to another exception which goes unhandled. memcached then terminates e.g.
CRITICAL Caught unhandled std::exception-derived exception. what(): to_string(cb::mcbp::ClientOpcode): Invalid opcode: 187
|
CRITICAL *** Fatal error encountered during exception handling ***
|
memcached will then terminate.
Note that this issue does not seem to be as simple as firing a packet with an unknown opcode at memcached, there needs to be an exception within the execute path.
E.g.
- Calls execute in here
- An exception is caught and we try to log it here
- Inside this toJSON function we will call to_string on the unknown opcode
It's not clear what the first/handled exception was but for example we do have a number of places which may throw inside the mcbp_statemachine.