https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=20342 --- Comment #22 from David Cook <dcook@prosentient.com.au> --- (In reply to David Cook from comment #21)
In theory, if $SIG{CHLD} were set to IGNORE rather than DEFAULT, then we possibly wouldn't get zombie processes, but that would need to be set at a higher level than stage-marc-import.pl I reckon, plus it's not a brilliant idea, as it would have wider consequences.
--
Looking at https://metacpan.org/pod/CGI::Compile#exit-and-exceptions, I see that exit() isn't a real exit as well... makes sense.
If we use CORE::exit(0) instead of exit(0), it actually exits the background child process, although we still wind up with the zombie process like so:
So if I use CORE::exit(0) in stage-marc-import.pl and $SIG{CHLD} = 'IGNORE' in /etc/koha/sites/kohadev/plack.psgi, then I don't get a zombie process. But... I really don't think this is a great idea, although I'm not seeing any explicit web usage of wait/waitpid... https://docstore.mik.ua/orelly/perl/cookbook/ch16_20.htm makes me think we should be more careful. I think the best bet is to have this be a proper background task where stage-marc-import.pl is responsible only for the file upload, and then it enqueues a background task with RabbitMQ to let a background worker deal with the actual work. -- You are receiving this mail because: You are the assignee for the bug. You are watching all bug changes.