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/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 [email protected].
Visit this group at https://groups.google.com/group/capnproto.

Reply via email to