My code is almost identical to the basic C++ tutorial <https://grpc.io/docs/languages/cpp/basics/>, but for server side streaming, not client, and calling the blocking/synchronous versions, not the Async versions. The exception (below) is occurring in ClientReader::Read(). Initially, the size of ClientRpcInfo.interceptors_ is 0. However, in client_context.h, line 481, the entire rpc_info_ object is overwritten, and at that point the size becomes 3952075555, obviously incorrect. At this point, the logic ends up in the grpc::experimental::ClientRpcInfo::RunInterceptor() and with incorrect data generates an "Exception 0xc0000005 encountered at address 0x7ff7dd2f5961: Access violation reading location 0xffffffffffffffff".
I have reread the tutorial several times, and do not think I am missing any steps. I create a channel, then the stub, then connect to the server. That and a non-streaming call works, but reading from the stream on the client dies. What might I be doing wrong? The gRPC version being used is pulled in using vcpkg under Windows. What is might be missing? Also, I do not need any experimental features, but have not found a way to exclude that code. Thank you. grpc::experimental::ClientRpcInfo::RunInterceptor(grpc::experimental::InterceptorBatchMethods *, unsigned long long) client_interceptor.h:141 grpc::internal::InterceptorBatchMethodsImpl::RunClientInterceptors() interceptor_common.h:288 grpc::internal::InterceptorBatchMethodsImpl::RunInterceptors() interceptor_common.h:246 grpc::internal::CallOpSet::RunInterceptors() call_op_set.h:1013 grpc::internal::CallOpSet::FillOps(grpc::internal::Call *) call_op_set.h:900 grpc::Channel::PerformOpsOnCall(grpc::internal::CallOpSetInterface *, grpc::internal::Call *) channel_cc.cc:165 grpc::internal::Call::PerformOps(grpc::internal::CallOpSetInterface *) call.h:68 grpc::ClientReader::Read(browser::grpc::CommMgrProcessedEvent *) sync_stream.h:216 CommMgr::CommManager::GrpcEventProcessor() CommManager.cpp:300 std::invoke<…>(void (CommMgr::CommManager::*&)(), CommMgr::CommManager *&) type_traits:1601 std::_Invoker_ret::_Call<…>(void (CommMgr::CommManager::*&)(), CommMgr::CommManager *&) functional:763 std::_Call_binder<std::_Unforced,0,void (__cdecl CommMgr::CommManager::*)(void),std::tuple<CommMgr::CommManager *>,std::tuple<> >(_Invoker_ret<std::_Unforced,0>,integer_sequence<unsigned __int64,0>,void (CommMgr::CommManager::*&)(),std::tuple<CommMgr::CommManager *> &,std::tuple<> &&) functional:1414 std::_Binder::operator()<…>() functional:1452 boost::detail::thread_data::run() thread.hpp:120 boost::`anonymous namespace'::thread_start_function(void *) thread.cpp:296 -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/61e19190-20e2-4dc7-b4f7-f938823d80a3n%40googlegroups.com.