Actions
Bug #20085
closedFiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux
Description
ruby -e "Fiber.new{}.resume"
0.170 -e:1: [BUG] Segmentation fault at 0x0036ffffb4f110f0
0.170 ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [aarch64-linux]
0.170
0.170 -- Control frame information -----------------------------------------------
0.170 c:0003 p:---- s:0010 e:000009 CFUNC :resume
0.170 c:0002 p:0007 s:0006 E:0005e0 EVAL -e:1 [FINISH]
0.170 c:0001 p:0000 s:0003 E:000b50 DUMMY [FINISH]
0.170
0.170 -- Ruby level backtrace information ----------------------------------------
0.170 -e:1:in `<main>'
0.170 -e:1:in `resume'
0.170
0.170 -- Threading information ---------------------------------------------------
0.170 Total ractor count: 1
0.170 Ruby thread count for this ractor: 1
0.170
0.170 -- Machine register context ------------------------------------------------
0.170 x0: 0x0000aaab11b4f570 x1: 0x0000aaab11de4a40 x2: 0x0000ffffe5571990
0.170 x3: 0x0000ffff9ac5ff60 x4: 0x0000ffff9ac60018 x5: 0x0000ffff9ac80000
0.170 x6: 0x0000ffffb5458b88 x7: 0x0000000000000000 x18: 0x00000000007fffff
0.170 x19: 0x0000000000000000 x20: 0x0000000000000000 x21: 0x0000000000000000
0.170 x22: 0x0000000000000000 x23: 0x0000000000000000 x24: 0x0000000000000000
0.170 x25: 0x0000000000000000 x26: 0x0000000000000000 x27: 0x0000000000000000
0.170 x28: 0x0000000000000000 x29: 0x0000000000000000 sp: 0x0000ffff9ac60000
0.170 fau: 0x0036ffffb4f110f0
0.170
0.170 -- C level backtrace information -------------------------------------------
0.171 Segmentation fault
- Ruby 3.3.0-rc1 and 3.2.2 work without Segmentation fault on both amd64 and arm64.
- Ruby 3.3.0 works on amd64, but fails with Segmentation fault on arm64 (aarch64-linux) on Ubuntu 22.04 and Debian Bookworm.
Dockerfile to reproduce:
FROM debian:bookworm
# Set UTF-8 locale by default.
ENV RBENV_ROOT=/usr/local/rbenv \
PATH=/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH
RUN ( \
export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl git \
# standard dependencies for rbenv
autoconf \
patch \
build-essential \
rustc \
libssl-dev \
libyaml-dev \
libreadline6-dev \
zlib1g-dev \
libgmp-dev \
libncurses5-dev \
libffi-dev \
libgdbm6 \
libgdbm-dev \
libdb-dev \
uuid-dev \
)
ENV RBENV_VERSION=3.3.0
RUN ( \
export DEBIAN_FRONTEND=noninteractive \
# Install rbenv & ruby-build
&& git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv \
&& git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build \
&& /usr/local/rbenv/plugins/ruby-build/install.sh \
&& echo 'export RBENV_ROOT=/usr/local/rbenv' >> /etc/profile.d/rbenv.sh \
&& echo 'export PATH=/usr/local/rbenv/bin:$PATH' >> /etc/profile.d/rbenv.sh \
&& echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh \
&& echo 'export RBENV_ROOT=/usr/local/rbenv' >> /root/.bashrc \
&& echo 'export PATH=/usr/local/rbenv/bin:$PATH' >> /root/.bashrc \
&& echo 'eval "$(rbenv init -)"' >> /root/.bashrc \
&& eval "$(rbenv init -)"; rbenv install $RBENV_VERSION \
&& eval "$(rbenv init -)"; rbenv global $RBENV_VERSION \
)
RUN
RUN ruby -e "Fiber.new{}.resume"
docker build --platform linux/arm64 .
Files
Actions
Like4
Like0Like0Like2Like1Like2Like0Like3Like3Like1Like2Like1Like1Like2Like0Like2Like1Like1Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like1Like0Like0