Hello,

I am currently using Google's ProtocolBuffers inside my C++ app.
One feature I am adding will generate X.pb.cc and  X.pb.h after I've chosen 
a proto file from a file dialog.

To do that, I am calling CppGenerator::Generate (I made my own 
implementation of ZeroCopyOutputStream and GeneratorContext). I also 
target-linked with pthread (otherwise, the Generate() call will send a SIG 
ABRT error).

The first time I do that, the .pb.cc and .pb.h files are generated 
sucessfully. However, when I try to use this feature a second time, I get a 
SIG ABRT error (it should be a multi-thread problem).

The valgrind output shows :

Process terminating with default action of signal 11 (SIGSEGV)
Access not within mapped region at address 0x38F0000057E

google::protobuf::EnumDescriptor::FindValueByNumber(int) const
google::protobuf::internal::NameofEnum
google::protobuf::compiler::cpp::(anonymous 
namespace)::SetPrimitiveVariables
google::protobuf::compiler::cpp::PrimitiveFieldGenerator::PrimitiveFieldGenerator
google::protobuf::compiler::cpp::FieldGeneratorMap::MakeGenerator
google::protobuf::compiler::cpp::FieldGeneratorMap::FieldGeneratorMap
google::protobuf::compiler::cpp::MessageGenerator::MessageGenerator
google::protobuf::compiler::cpp::FileGenerator::FileGenerator
google::protobuf::compiler::cpp::CppGenerator::Generate
ProtobufGenerator::GenCode

Is there a way to "reset" the threading system of the program once I have 
finished the first call of Generate() ?
I have already tried to delete the instance of the CppGenerator and 
reinstantiate a new one to call Generate() a second time, but it doesn't 
work.
However, if I call Generate() twice consecutively within one same call of 
the "GenCode" method, it works.

I can't do that :
ProtobufGenerator::GenCode => 
google::protobuf::compiler::cpp::CppGenerator::Generate
and then, another time
ProtobufGenerator::GenCode => 
google::protobuf::compiler::cpp::CppGenerator::Generate

But I can do :
ProtobufGenerator::GenCode =>
google::protobuf::compiler::cpp::CppGenerator::Generate
google::protobuf::compiler::cpp::CppGenerator::Generate

Any idea please?

Thank you very much for your help

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" 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/protobuf.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/ac21a635-0e67-4cb2-8d8c-20795a929c1c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to