On Thu, Feb 18, 2010 at 6:13 AM, edan <eda...@gmail.com> wrote: > We have a core dump here: > > #0 0xf749b0d9 in std::string::size () from /usr/lib/libstdc++.so.6 > #1 0x0822119c in bd::Header::ByteSize () > #2 0x082323b3 in > google::protobuf::internal::WireFormat::MessageSizeNoVirtual<bd::Header> () > #3 0x082257cd in bd::Request::ByteSize () > #4 0x08233773 in > google::protobuf::internal::WireFormat::MessageSizeNoVirtual<bd::Request> () > #5 0x082258b8 in bd::Data::ByteSize () > #6 0x08233797 in > google::protobuf::internal::WireFormat::MessageSizeNoVirtual<bd::Data> () > #7 0x0822598e in bd::Main::ByteSize () > > Question #1: Any clue what could cause this? If bd::Request defines a > "repeated bd::Header" field and this core dump is already in > bd::Header::ByteSize, does that mean there must be at least one bd::Header > in the repeated list, or could it be empty still (never added anything)? >
Yes, there must be at least one bd::Header. Or at least the code thinks there is one. Things to consider: - Do you use the "hard-core" memory management methods of RepeatedPtrField, like AddAllocated()? If so, investigate these calls to make sure that the pointers are valid and the ownership transfer is being respected. - Is it possible that your code tried to delete a sub-object of a message (e.g. a bd::Header that was embedded in a bd::Request) without first obtaining ownership? > (gdb) p *pb_pip_thread_data->bd_pb_data_msg.main_msg_hnd > Attempt to dereference a generic pointer. > (gdb) p *(bd::Main *)pb_pip_thread_data->bd_pb_data_msg.main_msg_hnd > A syntax error in expression, near > `)pb_pip_thread_data->bd_pb_data_msg.main_msg_hnd'. > In gdb you have to put single-quotes around scoped C++ names, e.g.: p *('bd::Main' *)pb_pip_thread_data->bd_pb_data_msg.main_msg_hnd I don't know why gdb requires this. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@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.