Marc Sune
2018-03-02 18:17:02 UTC
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::_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/json.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
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/json.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 capnproto+***@googlegroups.com.
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 capnproto+***@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.