From: "byroot (Jean Boussier) via ruby-core" Date: 2024-08-10T09:22:25+00:00 Subject: [ruby-core:118828] [Ruby master Bug#20672] UNIXSocket.pair transmitting data between pids looks flaky Issue #20672 has been updated by byroot (Jean Boussier). I'm able to reproduce with large enough message (e.g. `-c 4000` on my machine). However if I change: ```ruby received_w = UNIXSocket.for_fd(main_c.recv_io.fileno) ``` with: ```ruby received_w = main_c.recv_io received_w.sync = true ``` It fixes the problem. I'm not yet clear on what is causing this, but I suspect some metadata is lost when you use `for_fd`. But I think it should work, so I'll try to figure out what exactly. ---------------------------------------- Bug #20672: UNIXSocket.pair transmitting data between pids looks flaky https://bugs.ruby-lang.org/issues/20672#change-109393 * Author: danh337 (Dan H) * Status: Open * ruby -v: ruby 3.3.4 (2024-07-09 revision be1089c8ec) [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- I have code that uses UNIXSocket.pair and fork to send data between parent and child. It seems to work fine for a small number of messages passed, but then fails with Errno::EBADF on the child pid writing to its socket received from the parent. I attached a test driver which includes successful and failed test runs. This is boiled down logic from a larger app, where I first started seeing this issue. I believe I first saw this on Ruby 3.0, but now I am on 3.3.4. This *could* be me, as in my code or my workstation env, but I have not been able to prove that from many web searches. If you look at my test driver and see something wrong with it, I will take the shame and learn something. BUT just in case this is an issue in low level Ruby code, I am submitting this here. ---Files-------------------------------- test.rb (13 KB) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/