Maybe a better strategy would be to introduce a new type of buffer object (supported by the get_memory_object_* APIs) which can be used to (cheaply) carry some arbitrary binary data. That is in principle already supported by Stdio.File()->write().
You could also use Stdio.Buffer() for that today, but you would want to make sure to keep the buffer objects for longer than just one read and write pair.
Arne
On Mon, 15 Mar 2021, Stephen R. van den Berg wrote:
Tobias S. Josefowitz wrote:
for trouble. The GC might decide to run, I wouldn't necessarily expect that to work out - but then maybe it does, another thread might
I'd think that wouldn't be a problem, since all refs are accounted for.
request a backtrace of your thread and non-hashed strings might leak
I'm not quite sure what happens if someone copies that string for a backtrace. For this to work, the string should then be copied into a new shared string.
into the system like that, or your write call might fail (say OOM), leaving your very own thread with a backtrace leaking the non-hashed string into the system.
That has been taken care of. My non-hashed strings are accounted for and will be cleaned up properly, even in the midst of exceptions. -- Stephen.