Hi all,

I have an application that was originally doing all of the Protocol
Buffer access in Python but I'm in the process of moving a performance
critical part to C++.  Most of the Protocol Buffer access code remains
in Python with just one part in C++ right now.  Most of the time
everything works fine but periodically the application terminates with
this message:

libprotobuf FATAL src/proto/user.pb.cc:51] CHECK failed: file !=
NULL:
terminate called after throwing an instance of
'google::protobuf::FatalException'
  what():  CHECK failed: file != NULL:

and the relevant part of the source file is:

void protobuf_AssignDesc_user_2eproto() {
  protobuf_AddDesc_user_2eproto();
  const ::google::protobuf::FileDescriptor* file =
    ::google::protobuf::DescriptorPool::generated_pool()-
>FindFileByName(
      "user.proto");

I'm a little confused about why the C++ code needs to access the
original descriptor at runtime and why it seems to be intermittent as
to when it needs to do so.  The proto file in question does not import
any other packages and of course the C++ source file already contains
the file descriptor that describes the whole proto file anyway.  Does
this simple use case require me to delve into descriptor databases and
pools?  I'm using version 2.4.1 with the C++ backend for Python via
the PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp environment variable.

Thanks,

Patrick

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to