From: "MSP-Greg (Greg L)" Date: 2021-08-27T02:15:48+00:00 Subject: [ruby-core:105076] [Ruby master Bug#18134] Memory leak with master Issue #18134 has been updated by MSP-Greg (Greg L). The leak first appears after [`0ef2923c2b` Avoid rehashing in Hash#replace/dup/initialize_copy \[Bug #16996\]](https://github.com/ruby/ruby/commit/0ef2923c2b9afb76b3a1cebc56ebabc71c9a2ba8). Log I kept while bisecting: ``` FAIL b9908ea666 ruby 3.1.0dev (2021-03-18T19:03:14Z master b9908ea666) [x86_64-linux] FAIL 0ef2923c2b ruby 3.1.0dev (2021-03-18T11:34:40Z master 0ef2923c2b) [x86_64-linux] PASS d094c3ef04 ruby 3.1.0dev (2021-03-18T11:34:40Z master d094c3ef04) [x86_64-linux] PASS e0dd072978 ruby 3.1.0dev (2021-03-18T06:20:41Z master e0dd072978) [x86_64-linux] ``` [GitHub Commit History](https://github.com/ruby/ruby/commits/master?after=dae71be2c8eeaa561de78cdc34ec3ad9f9dc9edd+0&branch=master) Assuming this is caused by c code, Puma's only c code when running the test is the http parser, which has been relatively static, and is derived from the old Mongrel parser. I'm not familiar with the Nio4r code used... ---------------------------------------- Bug #18134: Memory leak with master https://bugs.ruby-lang.org/issues/18134#change-93483 * Author: MSP-Greg (Greg L) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0dev (2021-08-26T10:47:48Z master ef10e8a1eb) [x64-mingw32] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- While working on code to test Puma���s performance, I noticed a memory leak using WSL2 Ubuntu 20.04 and Ruby master. The leak seemed proportional to the number of requests made, and independent of the response size, either headers or body. Locally, I was running up to 2 million requests. The code used @ioquatix���s version of wrk and smem for measuring memory use. I ran GC.start and GC.compact before checking memory. The Puma configuration was using `fork`. I���ve got a lot of Ruby versions on Windows, but haven���t created the same setup for Ubuntu. So, I took the above code and ran it on GitHub Actions Ubuntu 20.04. Ruby 2.5.9, 2.7.4, and 3.0.2 did not have the memory leak, but master had the same leak I saw locally. Puma and one of its dependencies (nio4r) are both extension gems. Has there been an ABI change that might affect the code? I can try to bisect it if that would be helpful. Thanks, Greg -- https://bugs.ruby-lang.org/ Unsubscribe: