On Thu, Feb 18, 2010 at 6:13 AM, edan <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/protobuf?hl=en.