In particular, a reason that this is likely to fail out is that your 
listening port is #1000 , which will only work if you are root.

On Monday, September 10, 2018 at 3:35:33 PM UTC-7, Yang Gao wrote:
>
> The first thing I would check is whether server_ == nullptr after 
> BuildAndStart.
>
> On Mon, Sep 10, 2018 at 3:22 PM Alistair Lowe <[email protected] 
> <javascript:>> wrote:
>
>> Hi guys,
>>
>> I'm trying to implement my own gRPC 1.14.2 C++ async server loosely 
>> following the hello world examples, however I receive a segfault when 
>> attempting to make an asynchronous request as per the below stack trace:
>>
>> grpc::ServerInterface::RegisteredAsyncRequest::IssueRequest(void*, 
>> grpc_byte_buffer**, grpc::ServerCompletionQueue*) (Unknown Source:0)
>> grpc::ServerInterface::PayloadAsyncRequest<OpenIoTServer::EnrollRequest>::PayloadAsyncRequest(grpc::ServerInterface::PayloadAsyncRequest<OpenIoTServer::EnrollRequest>
>>  
>> * const this, void * registered_method, grpc::ServerInterface * server, 
>> grpc::ServerContext * context, 
>> grpc::internal::ServerAsyncStreamingInterface * stream, 
>> grpc::CompletionQueue * call_cq, grpc::ServerCompletionQueue * 
>> notification_cq, void * tag, OpenIoTServer::EnrollRequest * request) 
>> (/usr/local/include/grpcpp/impl/codegen/server_interface.h:212)
>> grpc::ServerInterface::RequestAsyncCall<OpenIoTServer::EnrollRequest>(grpc::ServerInterface
>>  
>> * const this, grpc::internal::RpcServiceMethod * method, 
>> grpc::ServerContext * context, 
>> grpc::internal::ServerAsyncStreamingInterface * stream, 
>> grpc::CompletionQueue * call_cq, grpc::ServerCompletionQueue * 
>> notification_cq, void * tag, OpenIoTServer::EnrollRequest * message) 
>> (/usr/local/include/grpcpp/impl/codegen/server_interface.h:275)
>> grpc::Service::RequestAsyncUnary<OpenIoTServer::EnrollRequest>(grpc::Service 
>> * const this, int index, grpc::ServerContext * context, 
>> OpenIoTServer::EnrollRequest * request, 
>> grpc::internal::ServerAsyncStreamingInterface * stream, 
>> grpc::CompletionQueue * call_cq, grpc::ServerCompletionQueue * 
>> notification_cq, void * tag) 
>> (/usr/local/include/grpcpp/impl/codegen/service_type.h:96)
>> OpenIoTServer::Device::WithAsyncMethod_Enroll<OpenIoTServer::Device::Service>::RequestEnroll(OpenIoTServer::Device::WithAsyncMethod_Enroll<OpenIoTServer::Device::Service>
>>  
>> * const this, grpc::ServerContext * context, OpenIoTServer::EnrollRequest * 
>> request, grpc::ServerAsyncResponseWriter<OpenIoTServer::EnrollResponse> * 
>> response, grpc::CompletionQueue * new_call_cq, grpc::ServerCompletionQueue 
>> * notification_cq, void * tag) 
>> (/home/developer/deployment-management-controller/device.grpc.pb.h:170)
>> main() (/home/developer/deployment-management-controller/main.cpp:81)
>>
>> I've simplified my code as much as possible and the problem is still 
>> occurring:
>> #include "device.grpc.pb.h"
>> #include <string>
>> #include <boost/fiber/algo/algorithm.hpp>
>> #include <grpcpp/grpcpp.h>
>> #include <boost/thread.hpp>
>> #include <boost/fiber/scheduler.hpp>
>>
>> using grpc::ServerAsyncResponseWriter;
>> using grpc::ServerBuilder;
>> using grpc::ServerContext;
>> using grpc::ServerCompletionQueue;
>> using grpc::Status;
>>
>> int main( int, char** )
>> {
>> std::unique_ptr<ServerCompletionQueue> cq_;
>> OpenIoTServer::Device::AsyncService service_;
>> std::unique_ptr<Server> server_;
>>
>> ServerBuilder serverBuilder;
>> serverBuilder.AddListeningPort( "127.0.0.1:1000", 
>> InsecureServerCredentials() );
>> serverBuilder.RegisterService( &service_ );
>>
>> cq_ = serverBuilder.AddCompletionQueue();
>> server_ = serverBuilder.BuildAndStart();
>> ServerContext ctx_;
>> EnrollRequest request_;
>> EnrollResponse reply_;
>> ServerAsyncResponseWriter<EnrollResponse> responder_(&ctx_);
>>
>> service_.RequestEnroll(&ctx_, &request_, &responder_, cq_.get(), cq_.get
>> (),(void*)1); // SEGFAULT WITHIN HERE
>> }
>>
>> My protobuf is generated from the following using protoc version 3.5.1:
>> syntax = "proto3";
>> package OpenIoTServer;
>>
>> service Device
>> {
>> rpc Enroll(EnrollRequest) returns (EnrollResponse);
>> }
>>
>> message EnrollRequest
>> {
>> bytes device_id = 1;
>> bytes user_id = 2;
>> }
>>
>> message EnrollResponse
>> {
>> bool success = 1;
>> }
>>
>> Any suggestions would be very-much appreciated!
>>
>> Many thanks
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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/6cea7726-cc2b-4ea0-bdcf-1a38f6301e43%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/grpc-io/6cea7726-cc2b-4ea0-bdcf-1a38f6301e43%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/fd1fb66f-ac8a-42c3-a8b1-b12834651dc8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to