On Thu, Jan 11, 2018 at 01:19:41PM +0100, Florian Weimer wrote:
On 01/11/2018 12:42 PM, Richard W.M. Jones wrote:
>If anyone notices Ruby programs which suddenly start to throw stack
>overflow errors (SystemStackError or the error message
>"stack level too deep") but*only* in the latest Rawhide (glibc >=
>2.26-9000, ruby >= 2.5.0), then I'm interested to hear from you.
Could you reproduce this outside of Koji?
Oh yes, very much so. You need absolutely latest Rawhide however
(certainly of glibc & ruby, not sure what else).
git clone
https://github.com/libguestfs/nbdkit
sudo dnf builddep nbdkit
cd nbdkit
./configure
make
make check -C tests TESTS=test-ruby
The test will fail with an error message:
nbdkit: error: ruby: stack level too deep
To go further with debugging it, I found the easiest way was:
gdb --args src/nbdkit -f -v plugins/ruby/.libs/nbdkit-ruby-plugin.so tests/test.rb
(gdb) break ec_stack_overflow
(gdb) run
In another window do:
telnet localhost 10809
Examining the Ruby execution context (*ec) seems to show that Ruby
gets confused by the use of C pthreads:
machine = {
stack_start = 0x7fffffffe000, <-- in the main thread stack
stack_end = 0x7ffff46997e8, <-- apparently "huge" stack
stack_maxsize = 8384512,
which is caused just because we're running in a different thread from
the main thread.
What strange is how this suddenly started to happen, whereas the same
code has been working fine for years. Unfortunately I cannot now
downgrade glibc to "prove" this is a glibc thing, rather than what's
more likely which is it's either Ruby itself or the test.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v