You aren't doing anything strange like using dlopen() to dynamically
load/unload libraries, are you? I can't think of anything obvious that
might cause this kind of error. The FileDescriptorTables are "static"
objects of sorts, I think. Are you calling ShutdownProtobufLibrary()
somewhere? Maybe more than once? Memory leaks *will* be reported by
valgrind if you don't call ShutdownProtobufLibrary(), but I don't know
what could cause a double free.
Evan
--
Evan Jones
http://evanjones.ca/
Do you ever call dlclose() on this library? Protobuf has some
complicated initialization time and shutdown clean up code buried in
descriptor.cc that I don't really understand. At the very least, there
is a call to this:
internal::OnShutdown(&DeleteGeneratedPool);
I'm a little surprised that I don't see that function appear on your
stack trace, if that is in fact the problem, but it must be something
like that. Could you try adding a printf() to the
DeleteGeneratedPool() function in protobuf/descriptor.cc and see if
that is getting called multiple times?
This FileDescriptorTable object is used internally by the protobuf
library and I don't really understand it. I'm hoping someone who might
understand this code might be able to suggest where this double free
could be coming from.
--
You received this message because you are subscribed to the Google Groups "Protocol Buffers" group.
To post to this group, send email to prot...@googlegroups.com.
To unsubscribe from this group, send email to protobuf+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.