Hi all,
While working on getting some code ready for Pike 9, I ran into what seems to be a regression: when forking a process into the background, Process.run() called in the child process seems to hang. I was able to confirm this behavior on macOS and illumos, so I don’t think it’s platform specific. I’ve attached a fairly minimal test case that demonstrates the problem: data should be written to the log file each second but the initial call to Process.run() never returns and so only the very first log message is generated.
I’ve confirmed that Pike 8 does not have this behavior. I’m hoping that someone more familiar with the Process module will have an idea of what’s going on.
Thanks in advance!
https://paste.sr.ht/~hww3/504e8244449110b5646f0267a5c0cb7e1b154206%EF%BF%BC
On Tue, 19 May 2026 at 02:23, H. William Welliver william@welliver.org wrote:
Hi all,
While working on getting some code ready for Pike 9, I ran into what seems to be a regression: when forking a process into the background, Process.run() called in the child process seems to hang. I was able to confirm this behavior on macOS and illumos, so I don’t think it’s platform specific. I’ve attached a fairly minimal test case that demonstrates the problem: data should be written to the log file each second but the initial call to Process.run() never returns and so only the very first log message is generated.
I’ve confirmed that Pike 8 does not have this behavior. I’m hoping that someone more familiar with the Process module will have an idea of what’s going on.
Not able to replicate this on Linux using Pike 9.0.12. Can you give me the exact commit hash you were testing on? I'll build that so we can see if it's platform or build.
ChrisA
I tested using both 9.0.11 and 9.0.13 release tarballs.
On May 18, 2026, at 12:41 PM, Chris Angelico rosuav@gmail.com wrote:
On Tue, 19 May 2026 at 02:23, H. William Welliver <william@welliver.org mailto:william@welliver.org> wrote:
Hi all,
While working on getting some code ready for Pike 9, I ran into what seems to be a regression: when forking a process into the background, Process.run() called in the child process seems to hang. I was able to confirm this behavior on macOS and illumos, so I don’t think it’s platform specific. I’ve attached a fairly minimal test case that demonstrates the problem: data should be written to the log file each second but the initial call to Process.run() never returns and so only the very first log message is generated.
I’ve confirmed that Pike 8 does not have this behavior. I’m hoping that someone more familiar with the Process module will have an idea of what’s going on.
Not able to replicate this on Linux using Pike 9.0.12. Can you give me the exact commit hash you were testing on? I'll build that so we can see if it's platform or build.
ChrisA
On Tue, 19 May 2026 at 02:43, H. William Welliver william@welliver.org wrote:
I tested using both 9.0.11 and 9.0.13 release tarballs.
Tested with the 9.0.13 tarball and it seems fine, the log is growing every second. So there may be something platform-specific going on.
ChrisA
Just wanted to follow up: while I haven’t been able to reproduce the problem on a linux system here, I have been able to demonstrate it on several others: illumos/solaris, macOS, NetBSD in particular.
There’s a fair amount of moving parts below this code in Pike 9 that I’m not familiar with, so if anyone with more recent experience has any ideas about how to narrow the problem down or what it might be in the first place, I’d be glad to hear them.
Bill
On May 18, 2026, at 1:06 PM, Chris Angelico rosuav@gmail.com wrote:
On Tue, 19 May 2026 at 02:43, H. William Welliver william@welliver.org wrote:
I tested using both 9.0.11 and 9.0.13 release tarballs.
Tested with the 9.0.13 tarball and it seems fine, the log is growing every second. So there may be something platform-specific going on.
ChrisA
pike-devel@lists.lysator.liu.se