Use of rate limiter can cause sbbs exception/crash under very high loads
Apparently we do need to mutex-protect the unordered_map in the rateLimiter class:
NULL pointer deref exception occurred here:
* websrvr.dll!std::_Adjust_manually_vector_aligned(void * & _Ptr, unsigned int & _Bytes) Line 205 C++ Symbols loaded.
websrvr.dll!std::_Deallocate<8>(void * _Ptr, unsigned int _Bytes) Line 286 C++ Symbols loaded.
websrvr.dll!std::allocator<__int64 *>::deallocate(__int64 * * const _Ptr, const unsigned int _Count) Line 985 C++ Symbols loaded.
websrvr.dll!std::deque<__int64,std::allocator<__int64>>::_Growmap(unsigned int _Count) Line 1644 C++ Symbols loaded.
websrvr.dll!std::deque<__int64,std::allocator<__int64>>::_Emplace_back_internal<__int64 const &>(const __int64 & <_Vals_0>) Line 1145 C++ Symbols loaded.
websrvr.dll!std::deque<__int64,std::allocator<__int64>>::push_back(const __int64 & _Val) Line 1249 C++ Symbols loaded.
> websrvr.dll!rateLimiter::allowRequest(const std::string & clientId) Line 51 C++ Symbols loaded.
websrvr.dll!get_req(http_session_t * session, char * request_line) Line 3542 C++ Symbols loaded.
websrvr.dll!http_session_thread(void * arg) Line 7072 C++ Symbols loaded.
websrvr.dll!thread_start<void (__cdecl*)(void *),0>(void * const parameter) Line 101 C++ Symbols loaded.
kernel32.dll!@BaseThreadInitThunk@12() Unknown Non-user code. Symbols loaded without source information.
ntdll.dll!___RtlUserThreadStart@8() Unknown Non-user code. Symbols loaded without source information.
ntdll.dll!__RtlUserThreadStart@8() Unknown Non-user code. Symbols loaded without source information.