Hi Marc, Do you have any custom type handlers registered via addTypeHandler()? Is it possible that the handler class has gone out-of-scope (been destroyed) by the time the encoder is executed?
-Kenton On Fri, Mar 2, 2018 at 10:18 AM, Marc Sune <[email protected]> wrote: > > That's about all that I can get, even though capnproto is compiled with > DEBUG. > > Or shall I say, it should :/ > > > On Friday, March 2, 2018 at 7:17:02 PM UTC+1, Marc Sune wrote: >> >> Hi guys, >> >> I am experiencing a _very_ strange segfault during JSON encoding of >> message: >> >> ``` >> Program received signal SIGSEGV, Segmentation fault. >> [Switching to Thread 27946] >> 0x0000000001e4b81a in std::__detail::_Hashtable_ebo_helper<1, >> capnp::(anonymous namespace)::TypeHash, >> true>::_S_cget(std::__detail::_Hashtable_ebo_helper<1, >> capnp::(anonymous namespace)::TypeHash, true> const&) () >> (gdb) bt >> #0 0x0000000001e4b81a in std::__detail::_Hashtable_ebo_helper<1, >> capnp::(anonymous namespace)::TypeHash, >> true>::_S_cget(std::__detail::_Hashtable_ebo_helper<1, >> capnp::(anonymous namespace)::TypeHash, true> const&) () >> #1 0x0000000001e4b11a in std::__detail::_Hash_code_base<capnp::Type, >> std::pair<capnp::Type const, capnp::JsonCodec::HandlerBase*>, >> std::__detail::_Select1st, capnp::(anonymous namespace)::TypeHash, >> std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, >> true>::_M_h1() const () >> #2 0x0000000001e4a976 in std::__detail::_Hash_code_base<capnp::Type, >> std::pair<capnp::Type const, capnp::JsonCodec::HandlerBase*>, >> std::__detail::_Select1st, capnp::(anonymous namespace)::TypeHash, >> std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, >> true>::_M_hash_code(capnp::Type const&) const () >> #3 0x0000000001e4a401 in std::_Hashtable<capnp::Type, >> std::pair<capnp::Type const, capnp::JsonCodec::HandlerBase*>, >> std::allocator<std::pair<capnp::Type const, >> capnp::JsonCodec::HandlerBase*> >, std::__detail::_Select1st, >> std::equal_to<capnp::Type>, capnp::(anonymous namespace)::TypeHash, >> std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, >> std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, >> false, true> >::find(capnp::Type const&) const () >> #4 0x0000000001e483a3 in std::unordered_map<capnp::Type, >> capnp::JsonCodec::HandlerBase*, capnp::(anonymous namespace)::TypeHash, >> std::equal_to<capnp::Type>, std::allocator<std::pair<capnp::Type const, >> capnp::JsonCodec::HandlerBase*> > >::find(capnp::Type const&) const () >> #5 0x0000000001e443d5 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #6 0x0000000001e44a6f in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #7 0x0000000001e45a36 in >> capnp::JsonCodec::encodeField(capnp::StructSchema::Field, >> capnp::DynamicValue::Reader, capnp::JsonValue::Builder) const () >> #8 0x0000000001e45377 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #9 0x0000000001e45a36 in >> capnp::JsonCodec::encodeField(capnp::StructSchema::Field, >> capnp::DynamicValue::Reader, capnp::JsonValue::Builder) const () >> #10 0x0000000001e45377 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #11 0x0000000001e45a36 in >> capnp::JsonCodec::encodeField(capnp::StructSchema::Field, >> capnp::DynamicValue::Reader, capnp::JsonValue::Builder) const () >> #12 0x0000000001e45377 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #13 0x0000000001e45a36 in >> capnp::JsonCodec::encodeField(capnp::StructSchema::Field, >> capnp::DynamicValue::Reader, capnp::JsonValue::Builder) const () >> #14 0x0000000001e45618 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #15 0x0000000001e45a36 in >> capnp::JsonCodec::encodeField(capnp::StructSchema::Field, >> capnp::DynamicValue::Reader, capnp::JsonValue::Builder) const () >> #16 0x0000000001e45618 in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type, capnp::JsonValue::Builder) const () >> #17 0x0000000001e43fcc in >> capnp::JsonCodec::encode(capnp::DynamicValue::Reader, >> capnp::Type) const () >> #18 0x00000000009e02c7 in capnp::JsonCodec::encode<Message::Builder >> const&> (this=0x7ffff22e1210, value=...) at /home/marc/.../capnp/compat/js >> on.h:216 >> ``` >> >> That's about all that I can get, even though capnproto is compiled with >> DEBUG. >> >> The message trying to be encoded (sorry, I am not sure I can share the >> entire set of schemas), is a series of simple objects, which in the >> inner-most object contains a list that is initialized normally: >> >> 115 s.initIfaceType(1); >> >> The funny part; not initializing it, doesn't make JsonCodec crash. But >> initializing it, or initializing it + setting a value (valid one), produces >> the crash always. >> >> Valgrind etc... doesn't complain until that point. >> >> I am trying to isolate the problem, to make it reproducible, but I am not >> able yet. >> >> Any ideas on this? >> >> Thanks >> > -- > You received this message because you are subscribed to the Google Groups > "Cap'n Proto" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > Visit this group at https://groups.google.com/group/capnproto. > -- You received this message because you are subscribed to the Google Groups "Cap'n Proto" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. Visit this group at https://groups.google.com/group/capnproto.
