https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc File lily/mutable-properties.cc (right):
https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode50 lily/mutable-properties.cc:50: if (SCM_EQ_P (key (i), k)) scm_is_eq https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode71 lily/mutable-properties.cc:71: if (SCM_EQ_P (key (i), k)) scm_is_eq https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode97 lily/mutable-properties.cc:97: if (SCM_EQ_P (key (i), k)) scm_is_eq https://codereview.appspot.com/575990043/diff/577740043/lily/mutable-properties.cc#newcode109 lily/mutable-properties.cc:109: Mutable_properties::mark () const This can segfault in GUILEv2 and/or depending on some other circumstances since the C++ members are only getting initialized after the GC hook is already operative. You need to sort the C++ structures potentially accessed by the GC hook into a Preinit class (grep for Preinit for existing uses) and inherit from that before inheriting from whatever operates the Smob. Then C++ guarantees an initialisation order consistent with GC hook operation. https://codereview.appspot.com/575990043/