Rare assert violation in client_get_session_and_remove_request_handle
Description
The assert assert(client_requests[session_request_handle_bs__req_handle] != constants__c_session_indet);
in the C implementation of the basic operation client_get_session_and_remove_request_handle
is often triggered in the LibSub context, when a client tries to subscribe to a non existing node.
Analysis
When the subscription fails, the LibSub client close the connection. However, some requests may still be unanswered when the close is effective. In this case, the client_requests
buffer is reset. When the response from the server arrives, the assert is triggered.
The B specification of the operation states that the operation may receive unsollicitated responses, and the assertion shall be deleted.