MOON
Server: Apache
System: Linux server2.shieldcogroup.com 3.10.0-1160.119.1.el7.tuxcare.els12.x86_64 #1 SMP Fri Nov 8 05:49:38 UTC 2024 x86_64
User: jacom (1029)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python2.7/site-packages/leapp/utils/workarounds/mp.py
import os
import multiprocessing.util
import multiprocessing

_start_method_set = False


def apply_workaround():
    global _start_method_set
    # Set start method for multiprocessing to fork (3.4+)
    set_start_method = getattr(multiprocessing, 'set_start_method', None)
    if not _start_method_set and set_start_method:
        set_start_method('fork')
        _start_method_set = True

    # Implements:
    # https://github.com/python/cpython/commit/e8a57b98ec8f2b161d4ad68ecc1433c9e3caad57
    #
    # Detection of fix: os imported to compare pids, before the fix os has not
    # been imported
    if getattr(multiprocessing.util, 'os', None):
        return

    class FixedFinalize(multiprocessing.util.Finalize):
        def __init__(self, *args, **kwargs):
            super(FixedFinalize, self).__init__(*args, **kwargs)
            self._pid = os.getpid()

        def __call__(self, *args, **kwargs):  # pylint: disable=signature-differs
            if self._pid != os.getpid():
                return None
            return super(FixedFinalize, self).__call__(*args, **kwargs)

    setattr(multiprocessing.util, 'Finalize', FixedFinalize)