OK, tracked it down to 
grpc-1.0.0/include/grpc++/impl/codegen/completion_queue_tag.h -- the pure 
virtual function "bool FinalizeResult()" -- what do I need to do to 
initialize it that I'm not doing in the program above? (As a hack, I just 
had it print a message to stdout and return "false", now the program 
doesn't give the "pure virtual method" error, but obviously isn't working 
completely as intended)

On Wednesday, November 16, 2016 at 9:12:43 AM UTC-5, [email protected] wrote:
>
> Sadly, I'm still stuck. I don't know enough C++ to be able to diagnose 
> this further... :-(
>
> On Tuesday, November 15, 2016 at 2:01:50 PM UTC-5, [email protected] wrote:
>>
>> Ok:
>>
>> *(gdb) handle SIG36 noprint*
>> *Signal        Stop      Print   Pass to program Description*
>> *SIG36         No        No      Yes             Real-time event 36*
>> *(gdb) run*
>> *Starting program: /.../minfail*
>> *[Thread debugging using libthread_db enabled]*
>> *D1115 13:59:40.187940393   34391 env_linux.c:77]             Warning: 
>> insecure environment read function 'getenv' used*
>> *[New Thread 0x7ffff6fcc700 (LWP 34394)]*
>> *[New Thread 0x7ffff65cb700 (LWP 34395)]*
>> *[New Thread 0x7ffff5bca700 (LWP 34396)]*
>> *[New Thread 0x7ffff51c9700 (LWP 34397)]*
>> *[New Thread 0x7ffff47c8700 (LWP 34398)]*
>> *[New Thread 0x7ffff3dc7700 (LWP 34399)]*
>> *[New Thread 0x7ffff33c6700 (LWP 34400)]*
>> *[New Thread 0x7ffff29c5700 (LWP 34401)]*
>> *[New Thread 0x7ffff1fc4700 (LWP 34402)]*
>> *[New Thread 0x7ffff15c3700 (LWP 34403)]*
>> *[New Thread 0x7ffff0bc2700 (LWP 34404)]*
>> *[New Thread 0x7ffff01c1700 (LWP 34405)]*
>> *[New Thread 0x7fffef7c0700 (LWP 34406)]*
>> *[New Thread 0x7fffeedbf700 (LWP 34407)]*
>> *[New Thread 0x7fffee3be700 (LWP 34408)]*
>> *[New Thread 0x7fffed9bd700 (LWP 34409)]*
>> *pure virtual method called*
>> *terminate called without an active exception*
>>
>> *Program received signal SIGABRT, Aborted.*
>> *0x00000035ce0325e5 in raise () from /lib64/libc.so.6*
>> *(gdb) bt*
>> *#0  0x00000035ce0325e5 in raise () from /lib64/libc.so.6*
>> *#1  0x00000035ce033dc5 in abort () from /lib64/libc.so.6*
>> *#2  0x00000035d4cbea7d in __gnu_cxx::__verbose_terminate_handler() () 
>> from /usr/lib64/libstdc++.so.6*
>> *#3  0x00000035d4cbcbd6 in ?? () from /usr/lib64/libstdc++.so.6*
>> *#4  0x00000035d4cbcc03 in std::terminate() () from 
>> /usr/lib64/libstdc++.so.6*
>> *#5  0x00000035d4cbd55f in __cxa_pure_virtual () from 
>> /usr/lib64/libstdc++.so.6*
>> *#6  0x00007ffff76e3f7a in 
>> grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) () 
>> from /.../lib/libgrpc++.so.1*
>> *#7  0x000000000040919f in grpc::CompletionQueue::Next 
>> [_ZN4grpc15Completion...] (this=0x628fa0, tag=0x7fffffffe1e8, 
>> ok=0x7fffffffe1e7) at 
>> .../include/grpc++/impl/codegen/completion_queue.h:148*
>> *#8  0x00000000004085ca in main [main] (argc=1, argv=0x7fffffffe3a8) at 
>> minfail.cc:95*
>> *(gdb)*
>>
>>
>> On Tuesday, November 15, 2016 at 1:55:48 PM UTC-5, Craig Tiller wrote:
>>>
>>> You probably want to first do 'handle SIG36 noprint' to let gdb pass the 
>>> (totally legitimate) signal to the application.
>>>
>>> On Tue, Nov 15, 2016 at 8:56 AM <[email protected]> wrote:
>>>
>>>>
>>>> Hi all,
>>>>
>>>> I've created a tiny code sample that is based off the hello world async 
>>>> greeter example. I keep getting a "pure virtual method called" in the 
>>>> grpc_completion_queue_next() function, and I'm having a hard time 
>>>> understanding why. What am I doing wrong?
>>>>
>>>> I've included the proto file, C++ code and gdb output... (the program 
>>>> is both a client or a server, if you give it a command line value of "c" 
>>>> it 
>>>> acts as a client).
>>>>
>>>> Thanks in advance!
>>>>
>>>> PROTO FILE
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> *syntax = "proto3";package helloworld;service Greeter{    rpc SayHello 
>>>> (HelloRequest) returns (stream HelloReply) {}}message HelloRequest{    
>>>> string  message = 1;}message HelloReply{    string  reply = 1;}*
>>>>
>>>>
>>>> C++ CODE
>>>>
>>>> *#include <iostream>*
>>>> *#include <string>*
>>>> *#include <grpc++/grpc++.h>*
>>>> *#include "minfail.grpc.pb.h"*
>>>>
>>>> *using namespace std;*
>>>> *using namespace helloworld;*
>>>>
>>>> *class CallData {*
>>>> *public:*
>>>> *    CallData(Greeter::AsyncService* service, 
>>>> grpc::ServerCompletionQueue* cq) : service_(service), cq_(cq), 
>>>> responder_(&ctx_), status_(CREATE) {*
>>>> *        Proceed();*
>>>> *    }*
>>>>
>>>> *    void Proceed() {*
>>>> *        if (status_ == CREATE) {*
>>>> *            status_ = PROCESS;*
>>>> *            service_->RequestSayHello(&ctx_, &request_, &responder_, 
>>>> cq_, cq_, this);*
>>>> *        } else if (status_ == PROCESS) {*
>>>> *            new CallData(service_, cq_);*
>>>> *            reply_.set_reply("hello " + request_.message());*
>>>> *            responder_.Write (reply_, this);*
>>>> *            responder_.Finish(grpc::Status::OK, this);*
>>>> *            status_ = FINISH;*
>>>> *        } else {*
>>>> *            GPR_ASSERT(status_ == FINISH);*
>>>> *            delete this;*
>>>> *        }*
>>>> *    }*
>>>>
>>>> *private:*
>>>> *    HelloRequest request_;*
>>>> *    HelloReply reply_;*
>>>> *    grpc::ServerAsyncWriter<HelloReply> responder_;*
>>>>
>>>> *    enum CallStatus { CREATE, PROCESS, FINISH };*
>>>> *    CallStatus status_;*
>>>> *    grpc::ServerContext ctx_;*
>>>> *    grpc::ServerCompletionQueue* cq_;*
>>>> *    Greeter::AsyncService* service_;*
>>>> *};*
>>>>
>>>> *class GreeterClient*
>>>> *{*
>>>> *public:*
>>>> *    GreeterClient (shared_ptr <grpc::Channel> channel)*
>>>> *    : stub_ (Greeter::NewStub (channel)) {}*
>>>> *    string*
>>>> *    SayHello (const string &user) {*
>>>> *        HelloRequest request;*
>>>> *        request.set_message (user);*
>>>> *        grpc::ClientContext context;*
>>>> *        unique_ptr <grpc::ClientReader <HelloReply>> reader 
>>>> (stub_->SayHello (&context, request));*
>>>> *        HelloReply reply;*
>>>> *        while (reader -> Read (&reply)) {*
>>>> *            cout << "SayHello returns " << reply.reply() << "\n";*
>>>> *        }*
>>>> *        grpc::Status status = reader -> Finish();*
>>>> *        if (status.ok()) {*
>>>> *            return (reply.reply());*
>>>> *        }*
>>>> *        return ("<RPC failed>");*
>>>> *    }*
>>>>
>>>> *private:*
>>>> *    unique_ptr<Greeter::Stub> stub_;*
>>>> *};*
>>>>
>>>> *int*
>>>> *main (int argc, char **argv)*
>>>> *{*
>>>> *    string server_address ("0.0.0.0:50051 <http://0.0.0.0:50051>");*
>>>>
>>>> *    if (argc == 2 && argv [1][0] == 'c') {*
>>>> *        GreeterClient greeter(grpc::CreateChannel (server_address, 
>>>> grpc::InsecureChannelCredentials()));*
>>>> *        cout << "Sending world...\n";*
>>>> *        cout << "Response is " << greeter.SayHello ("world") << "\n";*
>>>> *    } else {*
>>>> *        unique_ptr<grpc::ServerCompletionQueue> cq;*
>>>> *        Greeter::AsyncService service;*
>>>> *        unique_ptr<grpc::Server> server;*
>>>>
>>>> *        grpc::ServerBuilder builder;*
>>>>
>>>> *        builder.AddListeningPort(server_address, 
>>>> grpc::InsecureServerCredentials());*
>>>> *        builder.RegisterService(&service);*
>>>> *        cq = builder.AddCompletionQueue();*
>>>> *        server = builder.BuildAndStart();*
>>>>
>>>> *        new CallData(&service, cq.get());*
>>>> *        CallData* tag;  // uniquely identifies a request.*
>>>> *        bool ok;*
>>>> *        while (true) {*
>>>> *            GPR_ASSERT(cq->Next((void **)&tag, &ok));*
>>>> *            GPR_ASSERT(ok);*
>>>> *            tag->Proceed();*
>>>> *        }*
>>>>
>>>> *        server->Shutdown();*
>>>> *        cq->Shutdown();*
>>>> *    }*
>>>> *}*
>>>>
>>>> and run / GDB output:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> *$ ./minfailD1115 11:45:47.919769500   24264 
>>>> env_linux.c:77]             Warning: insecure environment read function 
>>>> 'getenv' usedpure virtual method calledterminate called without an active 
>>>> exceptionAborted (core dumped)*
>>>>
>>>> *$ gdb ./minfail*
>>>> *... elided ...*
>>>> *Program received signal SIG36, Real-time event 36.*
>>>> *0x00000035ce0e8cec in epoll_pwait () from /lib64/libc.so.6*
>>>> *(gdb) bt*
>>>> *#0  0x00000035ce0e8cec in epoll_pwait () from /lib64/libc.so.6*
>>>> *#1  0x00007ffff76f8d4a in ?? () from /.../lib/libgrpc++.so.1*
>>>> *#2  0x00007ffff76f91a6 in ?? () from /.../lib/libgrpc++.so.1*
>>>> *#3  0x00007ffff770d61b in grpc_completion_queue_next () from 
>>>> /.../lib/libgrpc++.so.1*
>>>> *#4  0x00007ffff76e3f20 in 
>>>> grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) () 
>>>> from /.../lib/libgrpc++.so.1*
>>>> *#5  0x000000000040919f in grpc::CompletionQueue::Next 
>>>> [_ZN4grpc15Completion...] (this=0x628fa0, tag=0x7fffffffe1e8, 
>>>> ok=0x7fffffffe1e7) at 
>>>> .../include/grpc++/impl/codegen/completion_queue.h:148*
>>>> *#6  0x00000000004085ca in main [main] (argc=1, argv=0x7fffffffe3a8) at 
>>>> minfail.cc:95*
>>>> *(gdb)*
>>>>
>>>> Any help greatly appreciated!
>>>>
>>>> Cheers,
>>>> -RK
>>>>
>>>> -- 
>>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/grpc-io.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/grpc-io/34f059a0-f825-4aa3-a725-84fb61e46b1f%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/34f059a0-f825-4aa3-a725-84fb61e46b1f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
On Wednesday, November 16, 2016 at 9:12:43 AM UTC-5, [email protected] wrote:
>
> Sadly, I'm still stuck. I don't know enough C++ to be able to diagnose 
> this further... :-(
>
> On Tuesday, November 15, 2016 at 2:01:50 PM UTC-5, [email protected] wrote:
>>
>> Ok:
>>
>> *(gdb) handle SIG36 noprint*
>> *Signal        Stop      Print   Pass to program Description*
>> *SIG36         No        No      Yes             Real-time event 36*
>> *(gdb) run*
>> *Starting program: /.../minfail*
>> *[Thread debugging using libthread_db enabled]*
>> *D1115 13:59:40.187940393   34391 env_linux.c:77]             Warning: 
>> insecure environment read function 'getenv' used*
>> *[New Thread 0x7ffff6fcc700 (LWP 34394)]*
>> *[New Thread 0x7ffff65cb700 (LWP 34395)]*
>> *[New Thread 0x7ffff5bca700 (LWP 34396)]*
>> *[New Thread 0x7ffff51c9700 (LWP 34397)]*
>> *[New Thread 0x7ffff47c8700 (LWP 34398)]*
>> *[New Thread 0x7ffff3dc7700 (LWP 34399)]*
>> *[New Thread 0x7ffff33c6700 (LWP 34400)]*
>> *[New Thread 0x7ffff29c5700 (LWP 34401)]*
>> *[New Thread 0x7ffff1fc4700 (LWP 34402)]*
>> *[New Thread 0x7ffff15c3700 (LWP 34403)]*
>> *[New Thread 0x7ffff0bc2700 (LWP 34404)]*
>> *[New Thread 0x7ffff01c1700 (LWP 34405)]*
>> *[New Thread 0x7fffef7c0700 (LWP 34406)]*
>> *[New Thread 0x7fffeedbf700 (LWP 34407)]*
>> *[New Thread 0x7fffee3be700 (LWP 34408)]*
>> *[New Thread 0x7fffed9bd700 (LWP 34409)]*
>> *pure virtual method called*
>> *terminate called without an active exception*
>>
>> *Program received signal SIGABRT, Aborted.*
>> *0x00000035ce0325e5 in raise () from /lib64/libc.so.6*
>> *(gdb) bt*
>> *#0  0x00000035ce0325e5 in raise () from /lib64/libc.so.6*
>> *#1  0x00000035ce033dc5 in abort () from /lib64/libc.so.6*
>> *#2  0x00000035d4cbea7d in __gnu_cxx::__verbose_terminate_handler() () 
>> from /usr/lib64/libstdc++.so.6*
>> *#3  0x00000035d4cbcbd6 in ?? () from /usr/lib64/libstdc++.so.6*
>> *#4  0x00000035d4cbcc03 in std::terminate() () from 
>> /usr/lib64/libstdc++.so.6*
>> *#5  0x00000035d4cbd55f in __cxa_pure_virtual () from 
>> /usr/lib64/libstdc++.so.6*
>> *#6  0x00007ffff76e3f7a in 
>> grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) () 
>> from /.../lib/libgrpc++.so.1*
>> *#7  0x000000000040919f in grpc::CompletionQueue::Next 
>> [_ZN4grpc15Completion...] (this=0x628fa0, tag=0x7fffffffe1e8, 
>> ok=0x7fffffffe1e7) at 
>> .../include/grpc++/impl/codegen/completion_queue.h:148*
>> *#8  0x00000000004085ca in main [main] (argc=1, argv=0x7fffffffe3a8) at 
>> minfail.cc:95*
>> *(gdb)*
>>
>>
>> On Tuesday, November 15, 2016 at 1:55:48 PM UTC-5, Craig Tiller wrote:
>>>
>>> You probably want to first do 'handle SIG36 noprint' to let gdb pass the 
>>> (totally legitimate) signal to the application.
>>>
>>> On Tue, Nov 15, 2016 at 8:56 AM <[email protected]> wrote:
>>>
>>>>
>>>> Hi all,
>>>>
>>>> I've created a tiny code sample that is based off the hello world async 
>>>> greeter example. I keep getting a "pure virtual method called" in the 
>>>> grpc_completion_queue_next() function, and I'm having a hard time 
>>>> understanding why. What am I doing wrong?
>>>>
>>>> I've included the proto file, C++ code and gdb output... (the program 
>>>> is both a client or a server, if you give it a command line value of "c" 
>>>> it 
>>>> acts as a client).
>>>>
>>>> Thanks in advance!
>>>>
>>>> PROTO FILE
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> *syntax = "proto3";package helloworld;service Greeter{    rpc SayHello 
>>>> (HelloRequest) returns (stream HelloReply) {}}message HelloRequest{    
>>>> string  message = 1;}message HelloReply{    string  reply = 1;}*
>>>>
>>>>
>>>> C++ CODE
>>>>
>>>> *#include <iostream>*
>>>> *#include <string>*
>>>> *#include <grpc++/grpc++.h>*
>>>> *#include "minfail.grpc.pb.h"*
>>>>
>>>> *using namespace std;*
>>>> *using namespace helloworld;*
>>>>
>>>> *class CallData {*
>>>> *public:*
>>>> *    CallData(Greeter::AsyncService* service, 
>>>> grpc::ServerCompletionQueue* cq) : service_(service), cq_(cq), 
>>>> responder_(&ctx_), status_(CREATE) {*
>>>> *        Proceed();*
>>>> *    }*
>>>>
>>>> *    void Proceed() {*
>>>> *        if (status_ == CREATE) {*
>>>> *            status_ = PROCESS;*
>>>> *            service_->RequestSayHello(&ctx_, &request_, &responder_, 
>>>> cq_, cq_, this);*
>>>> *        } else if (status_ == PROCESS) {*
>>>> *            new CallData(service_, cq_);*
>>>> *            reply_.set_reply("hello " + request_.message());*
>>>> *            responder_.Write (reply_, this);*
>>>> *            responder_.Finish(grpc::Status::OK, this);*
>>>> *            status_ = FINISH;*
>>>> *        } else {*
>>>> *            GPR_ASSERT(status_ == FINISH);*
>>>> *            delete this;*
>>>> *        }*
>>>> *    }*
>>>>
>>>> *private:*
>>>> *    HelloRequest request_;*
>>>> *    HelloReply reply_;*
>>>> *    grpc::ServerAsyncWriter<HelloReply> responder_;*
>>>>
>>>> *    enum CallStatus { CREATE, PROCESS, FINISH };*
>>>> *    CallStatus status_;*
>>>> *    grpc::ServerContext ctx_;*
>>>> *    grpc::ServerCompletionQueue* cq_;*
>>>> *    Greeter::AsyncService* service_;*
>>>> *};*
>>>>
>>>> *class GreeterClient*
>>>> *{*
>>>> *public:*
>>>> *    GreeterClient (shared_ptr <grpc::Channel> channel)*
>>>> *    : stub_ (Greeter::NewStub (channel)) {}*
>>>> *    string*
>>>> *    SayHello (const string &user) {*
>>>> *        HelloRequest request;*
>>>> *        request.set_message (user);*
>>>> *        grpc::ClientContext context;*
>>>> *        unique_ptr <grpc::ClientReader <HelloReply>> reader 
>>>> (stub_->SayHello (&context, request));*
>>>> *        HelloReply reply;*
>>>> *        while (reader -> Read (&reply)) {*
>>>> *            cout << "SayHello returns " << reply.reply() << "\n";*
>>>> *        }*
>>>> *        grpc::Status status = reader -> Finish();*
>>>> *        if (status.ok()) {*
>>>> *            return (reply.reply());*
>>>> *        }*
>>>> *        return ("<RPC failed>");*
>>>> *    }*
>>>>
>>>> *private:*
>>>> *    unique_ptr<Greeter::Stub> stub_;*
>>>> *};*
>>>>
>>>> *int*
>>>> *main (int argc, char **argv)*
>>>> *{*
>>>> *    string server_address ("0.0.0.0:50051 <http://0.0.0.0:50051>");*
>>>>
>>>> *    if (argc == 2 && argv [1][0] == 'c') {*
>>>> *        GreeterClient greeter(grpc::CreateChannel (server_address, 
>>>> grpc::InsecureChannelCredentials()));*
>>>> *        cout << "Sending world...\n";*
>>>> *        cout << "Response is " << greeter.SayHello ("world") << "\n";*
>>>> *    } else {*
>>>> *        unique_ptr<grpc::ServerCompletionQueue> cq;*
>>>> *        Greeter::AsyncService service;*
>>>> *        unique_ptr<grpc::Server> server;*
>>>>
>>>> *        grpc::ServerBuilder builder;*
>>>>
>>>> *        builder.AddListeningPort(server_address, 
>>>> grpc::InsecureServerCredentials());*
>>>> *        builder.RegisterService(&service);*
>>>> *        cq = builder.AddCompletionQueue();*
>>>> *        server = builder.BuildAndStart();*
>>>>
>>>> *        new CallData(&service, cq.get());*
>>>> *        CallData* tag;  // uniquely identifies a request.*
>>>> *        bool ok;*
>>>> *        while (true) {*
>>>> *            GPR_ASSERT(cq->Next((void **)&tag, &ok));*
>>>> *            GPR_ASSERT(ok);*
>>>> *            tag->Proceed();*
>>>> *        }*
>>>>
>>>> *        server->Shutdown();*
>>>> *        cq->Shutdown();*
>>>> *    }*
>>>> *}*
>>>>
>>>> and run / GDB output:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> *$ ./minfailD1115 11:45:47.919769500   24264 
>>>> env_linux.c:77]             Warning: insecure environment read function 
>>>> 'getenv' usedpure virtual method calledterminate called without an active 
>>>> exceptionAborted (core dumped)*
>>>>
>>>> *$ gdb ./minfail*
>>>> *... elided ...*
>>>> *Program received signal SIG36, Real-time event 36.*
>>>> *0x00000035ce0e8cec in epoll_pwait () from /lib64/libc.so.6*
>>>> *(gdb) bt*
>>>> *#0  0x00000035ce0e8cec in epoll_pwait () from /lib64/libc.so.6*
>>>> *#1  0x00007ffff76f8d4a in ?? () from /.../lib/libgrpc++.so.1*
>>>> *#2  0x00007ffff76f91a6 in ?? () from /.../lib/libgrpc++.so.1*
>>>> *#3  0x00007ffff770d61b in grpc_completion_queue_next () from 
>>>> /.../lib/libgrpc++.so.1*
>>>> *#4  0x00007ffff76e3f20 in 
>>>> grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) () 
>>>> from /.../lib/libgrpc++.so.1*
>>>> *#5  0x000000000040919f in grpc::CompletionQueue::Next 
>>>> [_ZN4grpc15Completion...] (this=0x628fa0, tag=0x7fffffffe1e8, 
>>>> ok=0x7fffffffe1e7) at 
>>>> .../include/grpc++/impl/codegen/completion_queue.h:148*
>>>> *#6  0x00000000004085ca in main [main] (argc=1, argv=0x7fffffffe3a8) at 
>>>> minfail.cc:95*
>>>> *(gdb)*
>>>>
>>>> Any help greatly appreciated!
>>>>
>>>> Cheers,
>>>> -RK
>>>>
>>>> -- 
>>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/grpc-io.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/grpc-io/34f059a0-f825-4aa3-a725-84fb61e46b1f%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/34f059a0-f825-4aa3-a725-84fb61e46b1f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/3435ff53-e851-418e-8013-f13444e67cc2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to