in reply to Re: Fork and creating a thread exits the process
in thread Fork and creating a thread exits the process

No, I tried adding say 1 after fork() and threads->create() and it didn't print it.

But now with Strawberry 32bit version it seems to work, this is bizarre. All I did differently is I installed WWW::Mechanize, which I use, with cpan. And it came with Strawberry built-in. At least perl -MWWW::Mechanize "print 1" printed 1. I don't understand at all what's happening. Things don't seem to work consistently at all.

  • Comment on Re^2: Fork and creating a thread exits the process

Replies are listed 'Best First'.
Re^3: Fork and creating a thread exits the process
by bliako (Abbot) on Jul 31, 2020 at 12:22 UTC

    So you say that it does/did not fork() at all? Have you investigated with a simple test script to see if forks happen, how many and under what conditions with what system messages? Can the OS limit the number of forks? Note that Windows does not have a native fork() and so Perl emulates that somehow. See perlfork for the caveats and warnings. (I am exclusively working with Linux so I can't help with anything else)

      Yes, it didn't fork at all. I tried a test script and both, the fork and threads worked. In my program, it was the first fork that failed. I couldn't even print the return value and it doesn't print any error messages on exit.

      I tested now with Strawberry 64bit and I wasn't able to get it work. But I tried again starting with a fresh 32bit version at that still does work.

      Yes, I read about perlfork.

        fluks,

        I have 64-bit Strawberry 5.30, and it has no trouble correctly running fork:

        #!perl use strict; use warnings; use feature 'say'; use Config; BEGIN { $| = 1; # autoflush say "perl $^V, uname = ", $Config{myuname}; } END { say scalar localtime, "\tprocess $$ is exiting"; } my $pid = fork(); if($pid==0) { say scalar localtime, "\tI am the child $$"; exit; } say scalar localtime, "\tI am the parent $$"; __END__ perl v5.30.0, uname = Win32 strawberry-perl 5.30.0.1 #1 Thu May 23 12: +20:46 2019 x64 Fri Jul 31 06:32:31 2020 I am the parent 10128 Fri Jul 31 06:32:31 2020 process 10128 is exiting Fri Jul 31 06:32:31 2020 I am the child -5108 Fri Jul 31 06:32:31 2020 process -5108 is exiting

        What happens if you run the same code?

        you are presumably running your actual program inside a web server? Perhaps that's the one blocking the forks? If your test script forks then web server configuration could be one of the problems. There are log files for both the server and windows