(let ((xs '(1)))
(set-car! xs 0))
(let ((xs '(1 2)))
(set-car! (cdr xs) 0))
Guile will segfault executing this code, and only when set-car! is called on the last node. I believe the expectation is that it does not segfault and xs will be modified to (0) or (1 0) in these two examples.
If I use (list 1) instead of '(1), Guile does not seem to segfault. Maybe '(1) is constructed differently?
$ guile --version
guile (GNU Guile) 3.0.9
Copyright (C) 2023 Free Software Foundation, Inc.
License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.