On Tue, Apr 16, 2024 at 10:22:32PM +0100, Richard W.M. Jones wrote:
> This has not worked for a long time because of a fundamental bug in
> how Ruby's garbage collector interacts with pthread stacks.  There has
> been a bug open for a long time (over 14 years) which has never been
> fixed:
> 
> https://redmine.ruby-lang.org/issues/2294#note-34
> 
> As that discussion is rather hard to follow, the basic problem is
> this:
> 
> When you embed Ruby you must tell the interpreter where "the stack"
> is.  You do this by calling RUBY_INIT_STACK early on (which we do in
> load(), on the main thread).  This marks the top of stack.
> 
> From time to time Ruby's garbage collector will scan the stack
> starting at the current stack pointer, and going up til it reaches the
> previously marked top of stack.  It scans this memory looking for
> roots etc.
> 
> This strategy fails completely if you have threads.  In a thread
> (using a different stack entirely) it scans randomly across the heap,
> resulting in weird behaviour at best, but more usually straight
> crashes.
> 
> We've had a Ruby plugin for a long time, but it broke with Ruby 1.9,
> when Ruby changed from some kind of cooperative threading to using
> native threads (and therefore separate stacks).
> 
> The tests have been disabled since early 2018 (nbdkit < 1.2).  I
> re-enabled the tests just now (Ruby 3.3) but it's broken in the same
> way as ever.
> 
> The only changes that have happened since the tests were disabled are
> mechanical ones / project-wide cleanups.
> 
> It currently crashes in open().
> 
> It seems highly unlikely that anyone is using this plugin.
> 
> Remove the plugin for nbdkit 1.40.

Makes sense, even if it is unfortunate that the upstream language is
not conducive to code bindings.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org
_______________________________________________
Libguestfs mailing list -- guestfs@lists.libguestfs.org
To unsubscribe send an email to guestfs-le...@lists.libguestfs.org

Reply via email to