- init_acknowledgers (ly_assoc_get (ly_symbol2scm ("acknowledgers"),
- definition, SCM_EOL),
- &interface_acknowledger_hash_);
+ SCM hash1 =
+ init_acknowledgers (ly_assoc_get (ly_symbol2scm ("acknowledgers"),
+ definition, SCM_EOL));
+ SCM hash2 =
+ init_acknowledgers (ly_assoc_get (ly_symbol2scm ("end-acknowledgers"),
+ definition, SCM_EOL));
+
+ per_instance_listeners_ = listeners;
+ interface_acknowledger_hash_.set (hash1, hash2);
+
+ // It's not defined whether Scheme_engraver::derived_mark is already
+ // active while the construction is underway, so we make sure we
+ // keep a version of everything on the stack that is not still
+ // covered by `definition'.