Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^3: Fork and creating a thread exits the process

by bliako (Prior)
on Jul 31, 2020 at 12:22 UTC ( #11120128=note: print w/replies, xml ) Need Help??


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

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)

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

Replies are listed 'Best First'.
Re^4: Fork and creating a thread exits the process
by fluks (Novice) on Jul 31, 2020 at 13:11 UTC

    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?

        This test works on 32bit Strawberry. And to be clear, my program works with that Perl version too, both with forking and threads, it seems to be the only Perl that it works on.

      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

        No, it's a normal and simple command line program.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11120128]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2020-12-01 14:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How often do you use taint mode?





    Results (10 votes). Check out past polls.

    Notices?