It works on this test case, and, assuming I correctly understand LilyPond’s use case, it may be a viable solution for LilyPond. Could you give it a try and report back? > Frankly, I don't get the current strategy of GUILE: basically any use of > scm_set_smob_mark will result in a function that can be called with > garbage from a smob that has already been deallocated via the function > registered with scm_set_smob_free. That’s not true. For example, the GnuTLS bindings use the exact same code for 1.8 and 2.0 without any problems; it’s surely a simpler example than LilyPond, of course, but still. ~~~~~~~ In the interest of the Guile and LilyPond projects, I would like to improve our communication. Let me explain what my personal expectations are. First, like many others, I’m a volunteer with limited bandwidth. Thus, I really prefer bug reports that are as concise as possible and to-the-point; I can’t afford to read so much. Second, I don’t want to mix issues: this bug report is about a specific GC issue, not about an encoding issue. It’s better for me (and everyone I guess) when a bug report remains focused. Third, we must fix these LilyPond vs. Guile 2 issues. You and others have spent a lot of time on this already. I think it would help to get everyone involved on both sides. Thus, could you Cc: this bug report to the LilyPond developer list, or the corresponding LilyPond bug report? This is really important to me. Please don’t take it personally or anything. I’m really trying hard to see how we can improve the collaboration between the two projects. Thanks, Ludo’.