Thanks Mark for responding.!
On client side, I did not receive a notification that server/stream closed. On server, after Read()->false, context_->IsCancelled() is true. Also, I have seen this client running on windows and server on linux. When I checked client as well on Linux, it did not reproduce.
There is a default value for GRPC_ARG_KEEPALIVE_TIME_MS = 2 hours. So that means if my bidi stream/session is not explicitly terminated by any parties and assuming connection is active, server should not be closed by any reason.