From: "xtkoba (Tee KOBAYASHI)" Date: 2021-12-15T18:06:49+00:00 Subject: [ruby-core:106698] [Ruby master Bug#18409] Crash (free(): invalid pointer) if LD_PRELOAD doesn't explicitly include libjemalloc.so.2 Issue #18409 has been updated by xtkoba (Tee KOBAYASHI). I noticed that commit:737e4432b978eb4b9f5b10fb6cc6d9c883a5d17a is not backported to Ruby 3.0.x series. So before `./configure` you may need to do something like ```bash export LDFLAGS="-Wl,--no-as-needed" ``` Make sure that the `ruby` executable has `DT_NEEDED` entry for `libjemalloc.so`: ``` $ readelf -Wa ruby | grep NEEDED 0x0000000000000001 (NEEDED) Shared library: [libruby.so.3.1] 0x0000000000000001 (NEEDED) Shared library: [libz.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libjemalloc.so.2] 0x0000000000000001 (NEEDED) Shared library: [libgmp.so.10] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libcrypt.so.2] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libbacktrace.so.0] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] ``` ---------------------------------------- Bug #18409: Crash (free(): invalid pointer) if LD_PRELOAD doesn't explicitly include libjemalloc.so.2 https://bugs.ruby-lang.org/issues/18409#change-95380 * Author: itay-grudev (Itay Grudev) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- I recently installed Ruby 3.0.2 using rbenv with: ``` RUBY_CONFIGURE_OPTS='--with-jemalloc' rbenv install 3.0.2 ``` After running our app it always crashed with: ``` free(): invalid pointer [1] 51364 IOT instruction (core dumped) bundle exec rails assets:precompile ``` I also tried upgrading to `3.0.3` with no success. After researching the bug a lot and lots of failed attempt to track it down I stumbled upon this report: https://github.com/grpc/grpc/issues/25450 that recommended trying: ``` LD_PRELOAD=$LD_PRELOAD:/lib/x86_64-linux-gnu/libjemalloc.so.2 bundle exec rails assets:precompile ``` That seems to have worked, but that can't be the proper solution in production. Surely it shouldn't be required. -- https://bugs.ruby-lang.org/ Unsubscribe: