bug#79479: Issue with substring/shared

Nikolaos Chatzikonstantinou <[email protected]> Thu, 9 Oct 2025 07:26:28 -0400
Newsgroups gmane.lisp.guile.bugs
Message-ID <CAAQmekdRhSjMxwDfDk63=zCNkQ5LsnGMLy=gepT=bs7Ng-Bwhw@mail.gmail.com>
--0000000000002861a90640b813cf
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, Sep 21, 2025 at 12:47=E2=80=AFAM Nikolaos Chatzikonstantinou
<[email protected]> wrote:
>
> Hello bug-guile,
>
> I have a structure (srfi srfi-9 gnu) that keeps parts of strings in a
> binary tree (it's a rope). The intention was to have it immutable, so
> I used substring/shared. I kept getting errors on my unit tests when I
> referenced individual characters; I could not replicate these errors
> on the REPL. Eventually I realized that substring/shared caused them.

I want to offer a small (<100 LoC) reproducible example now. I'm using
3.0.10. Try to run the test suite with autocompilation disabled
(--no-auto-compile), and you should get failure (if success, try
running again, rarely it succeeds.) If you compile the test.scm file,
then it should work fine.

I am not sure that I can figure this one out myself further, but
somehow it is related to my projects tests being left uncompiled. Does
anyone have an insight to the problem here?

Regards,
Nikolaos Chatzikonstantinou

--0000000000002861a90640b813cf
Content-Type: text/x-scheme; charset="US-ASCII"; name="rope.scm"
Content-Disposition: attachment; filename="rope.scm"
Content-Transfer-Encoding: base64
Content-ID: <f_mgjbvuom0>
X-Attachment-Id: f_mgjbvuom0

Ozsgcm9wZSwgYW4gaW1wbGVtZW50YXRpb24gb2Ygc3RyaW5nIHJvcGVzIGluIEdOVSBHdWlsZS4K
OzsgQ29weXJpZ2h0IChDKSAyMDI1ICBOaWtvbGFvcyBDaGF0emlrb25zdGFudGlub3UKOzsKOzsg
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KOzsKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KOzsKOzsgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
OzsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy8+LgoKKGRlZmluZS1tb2R1bGUgKGRhdGEgcm9wZSkKICAjOmV4cG9ydCAo
cm9wZS1yZWYKICAgICAgICAgICAgc3RyaW5nLT5yYW5kb20tcm9wZSkpCgooZGVmaW5lIChyb3Bl
LWxlbmd0aCByb3BlKQogICJUaGUgbGVuZ3RoIG9mIHRoZSByb3BlIChhbHNvIGFjY2VwdHMgc3Ry
aW5ncykuIgogIChpZiAoc3RyaW5nPyByb3BlKQogICAgICAoc3RyaW5nLWxlbmd0aCByb3BlKQog
ICAgICAoKyAocm9wZS1sZW5ndGggKGNhciByb3BlKSkKICAgICAgICAgKHJvcGUtbGVuZ3RoIChj
ZHIgcm9wZSkpKSkpCgooZGVmaW5lIChyb3BlLXJlZiByb3BlIGluZGV4KQogICJGZXRjaCB0aGUg
Y2hhcmFjdGVyIG9mIHRoZSByb3BlIGF0IHRoZSBnaXZlbiBpbmRleC4iCiAgKGlmIChzdHJpbmc/
IHJvcGUpCiAgICAgIChzdHJpbmctcmVmIHJvcGUgaW5kZXgpCiAgICAgIChsZXQgKChuIChyb3Bl
LWxlbmd0aCAoY2FyIHJvcGUpKSkpCiAgICAgICAgKGlmICg8PSBuIGluZGV4KQogICAgICAgICAg
ICAocm9wZS1yZWYgKGNkciByb3BlKSAoLSBpbmRleCBuKSkKICAgICAgICAgICAgKHJvcGUtcmVm
IChjYXIgcm9wZSkgaW5kZXgpKSkpKQoKKGRlZmluZSAoc3RyaW5nLT5yYW5kb20tcm9wZSBzKQog
ICJHZW5lcmF0ZSBhIHJhbmRvbSByb3BlIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gc3RyaW5nLiIK
ICAoaWYgKHN0cmluZy1udWxsPyBzKQogICAgICAiIgogICAgICAobGV0IGxvb3AgKChzIHMpKQog
ICAgICAgIChsZXQgKChuIChyYW5kb20gKHN0cmluZy1sZW5ndGggcykpKSkKICAgICAgICAgIChp
ZiAoemVybz8gbikgcwogICAgICAgICAgICAgIChsZXQgKChsZWZ0ICAobG9vcCAoc3Vic3RyaW5n
L3NoYXJlZCBzIDAgbikpKQogICAgICAgICAgICAgICAgICAgIChyaWdodCAobG9vcCAoc3Vic3Ry
aW5nL3NoYXJlZCBzIG4pKSkpCiAgICAgICAgICAgICAgICAoY29ucyBsZWZ0IHJpZ2h0KSkpKSkp
KQoKKGRlZmluZSAocm9wZSBsZWZ0IHJpZ2h0KQogICJSb3BlIGNvbnN0cnVjdG9yLiIKICAoY29u
ZCAoKGFuZCAoc3RyaW5nPyBsZWZ0KQogICAgICAgICAgICAgIChzdHJpbmctbnVsbD8gbGVmdCkp
ICByaWdodCkKICAgICAgICAoKGFuZCAoc3RyaW5nPyByaWdodCkKICAgICAgICAgICAgICAoc3Ry
aW5nLW51bGw/IHJpZ2h0KSkgbGVmdCkKICAgICAgICAoZWxzZSAoY29ucyBsZWZ0IHJpZ2h0KSkp
KQo=
--0000000000002861a90640b813cf
Content-Type: text/x-scheme; charset="US-ASCII"; name="test.scm"
Content-Disposition: attachment; filename="test.scm"
Content-Transfer-Encoding: base64
Content-ID: <f_mgjbw2kc1>
X-Attachment-Id: f_mgjbw2kc1

Ozsgcm9wZSwgYW4gaW1wbGVtZW50YXRpb24gb2Ygc3RyaW5nIHJvcGVzIGluIEdOVSBHdWlsZS4K
OzsgQ29weXJpZ2h0IChDKSAyMDI1ICBOaWtvbGFvcyBDaGF0emlrb25zdGFudGlub3UKOzsgCjs7
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCjs7Cjs7IFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Cjs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3Lmdu
dS5vcmcvbGljZW5zZXMvPi4KCih1c2UtbW9kdWxlcyAoc3JmaSBzcmZpLTY0KQogICAgICAgICAg
ICAgKGRhdGEgcm9wZSkpCgo7OzsgU2VlZCB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKKHNl
dCEgKnJhbmRvbS1zdGF0ZSogKHJhbmRvbS1zdGF0ZS1mcm9tLXBsYXRmb3JtKSkKCihkZWZpbmUg
ZnV6enlpbmctc3RyaW5nCiAgIlRoaXMgbG9uZyBzdHJpbmcgaXMgdXNlZCBmb3IgZnV6enlpbmcg
cHVycG9zZXMgdG8gY3JlYXRlIGxvbmcgcmFuZG9tIHJvcGVzLiIpCihkZWZpbmUgcm9wZSAoc3Ry
aW5nLT5yYW5kb20tcm9wZSBmdXp6eWluZy1zdHJpbmcpKQoKKHRlc3QtYmVnaW4gIlJvcGUiKQoo
dGVzdC1lcXYgInJlZiB3aXRoIHplcm8gaW5kZXguIgogIChzdHJpbmctcmVmIGZ1enp5aW5nLXN0
cmluZyAwKQogIChyb3BlLXJlZiByb3BlIDApKQoodGVzdC1lbmQgIlJvcGUiKQo=
--0000000000002861a90640b813cf--