Пример #1
0
 def register(self, target, typeinfer, func_id, args):
     # guard compiling the same function with the same signature
     if self.match(func_id.func, args):
         msg = "compiler re-entrant to the same function signature"
         raise errors.NumbaRuntimeError(msg)
     self._lock.acquire()
     self._stack.append(CallFrame(target, typeinfer, func_id, args))
     try:
         yield
     finally:
         self._stack.pop()
         self._lock.release()
Пример #2
0
def _confirm_gdb(need_ptrace_attach=True):
    """
    Set need_ptrace_attach to True/False to indicate whether the ptrace attach
    permission is needed for this gdb use case. Mode 0 (classic) or 1
    (restricted ptrace) is required if need_ptrace_attach is True. See:
    https://www.kernel.org/doc/Documentation/admin-guide/LSM/Yama.rst
    for details on the modes.
    """
    if not _unix_like:
        msg = 'gdb support is only available on unix-like systems'
        raise errors.NumbaRuntimeError(msg)
    gdbloc = config.GDB_BINARY
    if not (os.path.exists(gdbloc) and os.path.isfile(gdbloc)):
        msg = (
            'Is gdb present? Location specified (%s) does not exist. The gdb'
            ' binary location can be set using Numba configuration, see: '
            'https://numba.readthedocs.io/en/stable/reference/envvars.html'  # noqa: E501
        )
        raise RuntimeError(msg % config.GDB_BINARY)
    # Is Yama being used as a kernel security module and if so is ptrace_scope
    # limited? In this case ptracing non-child processes requires special
    # permission so raise an exception.
    ptrace_scope_file = os.path.join(os.sep, 'proc', 'sys', 'kernel', 'yama',
                                     'ptrace_scope')
    has_ptrace_scope = os.path.exists(ptrace_scope_file)
    if has_ptrace_scope:
        with open(ptrace_scope_file, 'rt') as f:
            value = f.readline().strip()
        if need_ptrace_attach and value not in ("0", "1"):
            msg = (
                "gdb can launch but cannot attach to the executing program"
                " because ptrace permissions have been restricted at the "
                "system level by the Linux security module 'Yama'.\n\n"
                "Documentation for this module and the security "
                "implications of making changes to its behaviour can be "
                "found in the Linux Kernel documentation "
                "https://www.kernel.org/doc/Documentation/admin-guide/LSM/Yama.rst"  # noqa: E501
                "\n\nDocumentation on how to adjust the behaviour of Yama "
                "on Ubuntu Linux with regards to 'ptrace_scope' can be "
                "found here "
                "https://wiki.ubuntu.com/Security/Features#ptrace.")
            raise RuntimeError(msg)
Пример #3
0
 def _require_nrt(self):
     if not self._enabled:
         raise errors.NumbaRuntimeError("NRT required but not enabled")