Home - Summaries: (main) : (py3.11) : Everything - Nightly builds - Benchmarks - RPython - Builders - About

pypy/module/fcntl/test/test_fcntl.py::AppTestFcntl::()::test_lockf

self = <CallInfo when='call' exception: expected ctypes_Struct flock { c_l_start, c_l...f LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>
func = <function <lambda> at 0x00007f7ce8bd4110>, when = 'call'
treat_keyboard_interrupt_as_exception = False

    def __init__(self, func, when, treat_keyboard_interrupt_as_exception=False):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

../_pytest/runner.py:212: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>       lambda: ihook(item=item, **kwds),
        when=when,
        treat_keyboard_interrupt_as_exception=item.config.getvalue("usepdb"),
    )

../_pytest/runner.py:194: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <_HookCaller 'pytest_runtest_call'>, args = ()
kwargs = {'item': <AppTestMethod 'test_lockf'>}, notincall = set([])

    def __call__(self, *args, **kwargs):
        if args:
            raise TypeError("hook calling supports only keyword arguments")
        assert not self.is_historic()
        if self.spec and self.spec.argnames:
            notincall = (
                set(self.spec.argnames) - set(["__multicall__"]) - set(kwargs.keys())
            )
            if notincall:
                warnings.warn(
                    "Argument(s) {} which are declared in the hookspec "
                    "can not be found in this hook call".format(tuple(notincall)),
                    stacklevel=2,
                )
>       return self._hookexec(self, self.get_hookimpls(), kwargs)

../_pytest/vendored_packages/pluggy/hooks.py:289: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <_pytest.config.PytestPluginManager object at 0x00007f7cc82cd830>
hook = <_HookCaller 'pytest_runtest_call'>
methods = [<HookImpl plugin_name='140175530711328', plugin=<rpython.conftest.LeakFinder instance at 0x00007f7d28b6d920>>, <HookI...bde528>>, <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x00007f7d28c2a058>>]
kwargs = {'item': <AppTestMethod 'test_lockf'>}

    def _hookexec(self, hook, methods, kwargs):
        # called from all hookcaller instances.
        # enable_tracing will set its own wrapping function at self._inner_hookexec
>       return self._inner_hookexec(hook, methods, kwargs)

../_pytest/vendored_packages/pluggy/manager.py:68: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

hook = <_HookCaller 'pytest_runtest_call'>
methods = [<HookImpl plugin_name='140175530711328', plugin=<rpython.conftest.LeakFinder instance at 0x00007f7d28b6d920>>, <HookI...bde528>>, <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x00007f7d28c2a058>>]
kwargs = {'item': <AppTestMethod 'test_lockf'>}

    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
        methods,
        kwargs,
>       firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
    )

../_pytest/vendored_packages/pluggy/manager.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

hook_impls = [<HookImpl plugin_name='140175530711328', plugin=<rpython.conftest.LeakFinder instance at 0x00007f7d28b6d920>>, <HookI...bde528>>, <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x00007f7d28c2a058>>]
caller_kwargs = {'item': <AppTestMethod 'test_lockf'>}, firstresult = False

    def _multicall(hook_impls, caller_kwargs, firstresult=False):
        """Execute a call into multiple python functions/methods and return the
        result(s).
    
        ``caller_kwargs`` comes from _HookCaller.__call__().
        """
        __tracebackhide__ = True
        results = []
        excinfo = None
        try:  # run impl and wrapper setup functions in a loop
            teardowns = []
            try:
                for hook_impl in reversed(hook_impls):
                    try:
                        args = [caller_kwargs[argname] for argname in hook_impl.argnames]
                    except KeyError:
                        for argname in hook_impl.argnames:
                            if argname not in caller_kwargs:
                                raise HookCallError(
                                    "hook call must provide argument %r" % (argname,)
                                )
    
                    if hook_impl.hookwrapper:
                        try:
                            gen = hook_impl.function(*args)
                            next(gen)  # first yield
                            teardowns.append(gen)
                        except StopIteration:
                            _raise_wrapfail(gen, "did not yield")
                    else:
                        res = hook_impl.function(*args)
                        if res is not None:
                            results.append(res)
                            if firstresult:  # halt further impl calls
                                break
            except BaseException:
                excinfo = sys.exc_info()
        finally:
            if firstresult:  # first result hooks return a single value
                outcome = _Result(results[0] if results else None, excinfo)
            else:
                outcome = _Result(results, excinfo)
    
            # run all wrapper post-yield blocks
            for gen in reversed(teardowns):
                try:
                    gen.send(outcome)
                    _raise_wrapfail(gen, "has second yield")
                except StopIteration:
                    pass
    
>           return outcome.get_result()

../_pytest/vendored_packages/pluggy/callers.py:208: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pluggy.callers._Result object at 0x00007f7d29c8a170>

    def get_result(self):
        """Get the result(s) for this hook call.
    
        If the hook was marked as a ``firstresult`` only a single value
        will be returned otherwise a list of results.
        """
        __tracebackhide__ = True
        if self._excinfo is None:
            return self._result
        else:
            ex = self._excinfo
            if _py3:
                raise ex[1].with_traceback(ex[2])
>           _reraise(*ex)  # noqa

../_pytest/vendored_packages/pluggy/callers.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

hook_impls = [<HookImpl plugin_name='140175530711328', plugin=<rpython.conftest.LeakFinder instance at 0x00007f7d28b6d920>>, <HookI...bde528>>, <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x00007f7d28c2a058>>]
caller_kwargs = {'item': <AppTestMethod 'test_lockf'>}, firstresult = False

    def _multicall(hook_impls, caller_kwargs, firstresult=False):
        """Execute a call into multiple python functions/methods and return the
        result(s).
    
        ``caller_kwargs`` comes from _HookCaller.__call__().
        """
        __tracebackhide__ = True
        results = []
        excinfo = None
        try:  # run impl and wrapper setup functions in a loop
            teardowns = []
            try:
                for hook_impl in reversed(hook_impls):
                    try:
                        args = [caller_kwargs[argname] for argname in hook_impl.argnames]
                    except KeyError:
                        for argname in hook_impl.argnames:
                            if argname not in caller_kwargs:
                                raise HookCallError(
                                    "hook call must provide argument %r" % (argname,)
                                )
    
                    if hook_impl.hookwrapper:
                        try:
                            gen = hook_impl.function(*args)
                            next(gen)  # first yield
                            teardowns.append(gen)
                        except StopIteration:
                            _raise_wrapfail(gen, "did not yield")
                    else:
>                       res = hook_impl.function(*args)

../_pytest/vendored_packages/pluggy/callers.py:187: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

item = <AppTestMethod 'test_lockf'>

    def pytest_runtest_call(item):
        _update_current_test_var(item, "call")
        sys.last_type, sys.last_value, sys.last_traceback = (None, None, None)
        try:
>           item.runtest()

../_pytest/runner.py:122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <AppTestMethod 'test_lockf'>

    def runtest(self):
        target = self.obj
        if self.config.option.runappdirect:
            return target()
        space = target.im_self.space
        filename = self._getdynfilename(target)
        func = app2interp_temp(target.im_func, filename=filename)
        w_instance = self.parent.w_instance
>       self.execute_appex(space, func, space, w_instance)

tool/pytest/apptest.py:89: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <AppTestMethod 'test_lockf'>, space = StdObjSpace
target = <function test_lockf at 0x00007f7ce8bfe728>
args = (StdObjSpace, <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00007f7ce8d07f68>)

    def execute_appex(self, space, target, *args):
        self.space = space
        try:
>           target(*args)

tool/pytest/apptest.py:30: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

space = StdObjSpace
args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00007f7ce8d07f68>,)
w_func = <Function test_lockf>
args = <pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00007f7ce8d07f68>

    def appcaller(space, *args_w):
        if not isinstance(space, ObjSpace):
            raise TypeError("first argument must be a space instance.")
        # the last argument can be an Arguments
        w_func = self.wget(space, name)
        if not args_w:
            return space.call_function(w_func)
        else:
            args = args_w[-1]
            assert args is not None
            if not isinstance(args, Arguments):
>               return space.call_function(w_func, *args_w)

interpreter/gateway.py:1227: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = StdObjSpace, w_func = <Function test_lockf>
args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00007f7ce8d07f68>,)
nargs = 1, Function = <class 'pypy.interpreter.function.Function'>
Method = <class 'pypy.interpreter.function.Method'>

    def call_function(self, w_func, *args_w):
        nargs = len(args_w) # used for pruning funccall versions
        if not self.config.objspace.disable_call_speedhacks and nargs < 5:
            # start of hack for performance
            from pypy.interpreter.function import Function, Method
            if isinstance(w_func, Method):
                w_inst = w_func.w_instance
                if w_inst is not None:
                    if nargs < 4:
                        func = w_func.w_function
                        if isinstance(func, Function):
                            return func.funccall(w_inst, *args_w)
                elif args_w and (
                        self.abstract_isinstance_w(args_w[0], w_func.w_class)):
                    w_func = w_func.w_function
    
            if isinstance(w_func, Function):
>               return w_func.funccall(*args_w)

interpreter/baseobjspace.py:1210: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Function test_lockf>
args_w = (<pypy.interpreter.typedef.W_ObjectObjectUserDictWeakrefable object at 0x00007f7ce8d07f68>,)
gateway = <module 'pypy.interpreter.gateway' from '/Users/matti/build-worker-x86_64/own-macos-x86-64/build/pypy/interpreter/gateway.pyc'>
PyCode = <class 'pypy.interpreter.pycode.PyCode'>
code = <code object test_lockf, file '[/Users/matti/build-worker-x86_64/own-macos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1>

    def funccall(self, *args_w): # speed hack
        from pypy.interpreter import gateway
        from pypy.interpreter.pycode import PyCode
    
        code = self.getcode() # hook for the jit
        nargs = len(args_w)
        fast_natural_arity = code.fast_natural_arity
        if nargs == fast_natural_arity:
            if nargs == 0:
                assert isinstance(code, gateway.BuiltinCode0)
                return code.fastcall_0(self.space, self)
            elif nargs == 1:
                assert isinstance(code, gateway.BuiltinCode1)
                return code.fastcall_1(self.space, self, args_w[0])
            elif nargs == 2:
                assert isinstance(code, gateway.BuiltinCode2)
                return code.fastcall_2(self.space, self, args_w[0], args_w[1])
            elif nargs == 3:
                assert isinstance(code, gateway.BuiltinCode3)
                return code.fastcall_3(self.space, self, args_w[0],
                                       args_w[1], args_w[2])
            elif nargs == 4:
                assert isinstance(code, gateway.BuiltinCode4)
                return code.fastcall_4(self.space, self, args_w[0],
                                       args_w[1], args_w[2], args_w[3])
        elif (nargs | PyCode.FLATPYCALL) == fast_natural_arity:
            assert isinstance(code, PyCode)
            if nargs < 5:
                new_frame = self.space.createframe(code, self.w_func_globals,
                                                   self)
                for i in funccallunrolling:
                    if i < nargs:
                        new_frame.locals_cells_stack_w[i] = args_w[i]
>               return new_frame.run()

interpreter/function.py:118: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13

    def run(self):
        """Start this frame's execution."""
        if self.getcode().co_flags & pycode.CO_GENERATOR:
            from pypy.interpreter.generator import GeneratorIterator
            return GeneratorIterator(self)
        else:
>           return self.execute_frame()

interpreter/pyframe.py:253: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
w_inputvalue = None, operr = None

    def execute_frame(self, w_inputvalue=None, operr=None):
        """Execute this frame.  Main entry point to the interpreter.
        The optional arguments are there to handle a generator's frame:
        w_inputvalue is for generator.send() and operr is for
        generator.throw().
        """
        # the following 'assert' is an annotation hint: it hides from
        # the annotator all methods that are defined in PyFrame but
        # overridden in the {,Host}FrameClass subclasses of PyFrame.
        assert (isinstance(self, self.space.FrameClass) or
                not self.space.config.translating)
        executioncontext = self.space.getexecutioncontext()
        executioncontext.enter(self)
        got_exception = True
        w_exitvalue = self.space.w_None
        try:
            executioncontext.call_trace(self)
            #
            try:
                if operr is not None:
                    next_instr = self.handle_operation_error(
                            executioncontext, operr)
                    self.last_instr = intmask(next_instr - 1)
                else:
                    # Execution starts just after the last_instr.  Initially,
                    # last_instr is -1.  After a generator suspends it points to
                    # the YIELD_VALUE instruction.
                    next_instr = r_uint(self.last_instr + 1)
                    if next_instr != 0:
                        self.pushvalue(w_inputvalue)
                w_exitvalue = self.dispatch(self.pycode, next_instr,
                                            executioncontext)
            except OperationError:
                raise
            except Exception as e:      # general fall-back
>               raise self._convert_unexpected_exception(e)

interpreter/pyframe.py:290: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
e = TypeError('expected ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_typ...LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }',)

    def _convert_unexpected_exception(self, e):
        from pypy.interpreter import error
    
>       operr = error.get_converted_unexpected_exception(self.space, e)

interpreter/pyframe.py:943: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
w_inputvalue = None, operr = None

    def execute_frame(self, w_inputvalue=None, operr=None):
        """Execute this frame.  Main entry point to the interpreter.
        The optional arguments are there to handle a generator's frame:
        w_inputvalue is for generator.send() and operr is for
        generator.throw().
        """
        # the following 'assert' is an annotation hint: it hides from
        # the annotator all methods that are defined in PyFrame but
        # overridden in the {,Host}FrameClass subclasses of PyFrame.
        assert (isinstance(self, self.space.FrameClass) or
                not self.space.config.translating)
        executioncontext = self.space.getexecutioncontext()
        executioncontext.enter(self)
        got_exception = True
        w_exitvalue = self.space.w_None
        try:
            executioncontext.call_trace(self)
            #
            try:
                if operr is not None:
                    next_instr = self.handle_operation_error(
                            executioncontext, operr)
                    self.last_instr = intmask(next_instr - 1)
                else:
                    # Execution starts just after the last_instr.  Initially,
                    # last_instr is -1.  After a generator suspends it points to
                    # the YIELD_VALUE instruction.
                    next_instr = r_uint(self.last_instr + 1)
                    if next_instr != 0:
                        self.pushvalue(w_inputvalue)
                w_exitvalue = self.dispatch(self.pycode, next_instr,
>                                           executioncontext)

interpreter/pyframe.py:286: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
pycode = <code object test_lockf, file '[/Users/matti/build-worker-x86_64/own-macos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1>
next_instr = 0L
ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x00007f7d29592e90>

    def dispatch(self, pycode, next_instr, ec):
        # For the sequel, force 'next_instr' to be unsigned for performance
        next_instr = r_uint(next_instr)
        co_code = pycode.co_code
    
        try:
            while True:
>               next_instr = self.handle_bytecode(co_code, next_instr, ec)

interpreter/pyopcode.py:63: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00d\x01\x00d\x00\x00l\x01\x00}\x02\x00d\x01\x00d\x00\x00l\x02\x00}\x03\x00t\x03\x00...x01\x00|\x01\x00\xc9\x07\x00|\x04\x00|\x01\x00j\x08\x00\xca\x02\x00\x01|\x04\x00\xc9\x18\x00\xca\x00\x00\x01d\x00\x00S'
next_instr = 0L
ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x00007f7d29592e90>

    def handle_bytecode(self, co_code, next_instr, ec):
        try:
>           next_instr = self.dispatch_bytecode(co_code, next_instr, ec)

interpreter/pyopcode.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
co_code = 'd\x01\x00d\x00\x00l\x00\x00}\x01\x00d\x01\x00d\x00\x00l\x01\x00}\x02\x00d\x01\x00d\x00\x00l\x02\x00}\x03\x00t\x03\x00...x01\x00|\x01\x00\xc9\x07\x00|\x04\x00|\x01\x00j\x08\x00\xca\x02\x00\x01|\x04\x00\xc9\x18\x00\xca\x00\x00\x01d\x00\x00S'
next_instr = 177L
ec = <pypy.interpreter.executioncontext.ExecutionContext object at 0x00007f7d29592e90>

    @jit.unroll_safe
    def dispatch_bytecode(self, co_code, next_instr, ec):
        while True:
            self.last_instr = intmask(next_instr)
            if jit.we_are_jitted():
                if self.debugdata:
                    ec.bytecode_only_trace(self)
                    next_instr = r_uint(self.last_instr)
            else:
                ec.bytecode_trace(self)
                next_instr = r_uint(self.last_instr)
            opcode = ord(co_code[next_instr])
            next_instr += 1
    
            if opcode >= HAVE_ARGUMENT:
                lo = ord(co_code[next_instr])
                hi = ord(co_code[next_instr+1])
                next_instr += 2
                oparg = (hi * 256) | lo
            else:
                oparg = 0
    
            # note: the structure of the code here is such that it makes
            # (after translation) a big "if/elif" chain, which is then
            # turned into a switch().
    
            while opcode == opcodedesc.EXTENDED_ARG.index:
                opcode = ord(co_code[next_instr])
                if opcode < HAVE_ARGUMENT:
                    raise BytecodeCorruption
                lo = ord(co_code[next_instr+1])
                hi = ord(co_code[next_instr+2])
                next_instr += 3
                oparg = (oparg * 65536) | (hi * 256) | lo
    
            if opcode == opcodedesc.RETURN_VALUE.index:
                if not self.blockstack_non_empty():
                    self.frame_finished_execution = True  # for generators
                    raise Return
                w_returnvalue = self.popvalue()
                block = self.unrollstack(SReturnValue.kind)
                if block is None:
                    self.pushvalue(w_returnvalue)
                    raise Return
                else:
                    unroller = SReturnValue(w_returnvalue)
                    next_instr = block.handle(self, unroller)
                    return next_instr    # now inside a 'finally' block
            elif opcode == opcodedesc.END_FINALLY.index:
                unroller = self.end_finally()
                if isinstance(unroller, SuspendedUnroller):
                    # go on unrolling the stack
                    block = self.unrollstack(unroller.kind)
                    if block is None:
                        w_result = unroller.nomoreblocks()
                        self.pushvalue(w_result)
                        raise Return
                    else:
                        next_instr = block.handle(self, unroller)
                return next_instr
            elif opcode == opcodedesc.JUMP_ABSOLUTE.index:
                return self.jump_absolute(oparg, ec)
            elif opcode == opcodedesc.BREAK_LOOP.index:
                next_instr = self.BREAK_LOOP(oparg, next_instr)
            elif opcode == opcodedesc.CONTINUE_LOOP.index:
                return self.CONTINUE_LOOP(oparg, next_instr)
            elif opcode == opcodedesc.FOR_ITER.index:
                next_instr = self.FOR_ITER(oparg, next_instr)
            elif opcode == opcodedesc.JUMP_FORWARD.index:
                next_instr = self.JUMP_FORWARD(oparg, next_instr)
            elif opcode == opcodedesc.JUMP_IF_FALSE_OR_POP.index:
                next_instr = self.JUMP_IF_FALSE_OR_POP(oparg, next_instr)
            elif opcode == opcodedesc.JUMP_IF_NOT_DEBUG.index:
                next_instr = self.JUMP_IF_NOT_DEBUG(oparg, next_instr)
            elif opcode == opcodedesc.JUMP_IF_TRUE_OR_POP.index:
                next_instr = self.JUMP_IF_TRUE_OR_POP(oparg, next_instr)
            elif opcode == opcodedesc.POP_JUMP_IF_FALSE.index:
                next_instr = self.POP_JUMP_IF_FALSE(oparg, next_instr)
            elif opcode == opcodedesc.POP_JUMP_IF_TRUE.index:
                next_instr = self.POP_JUMP_IF_TRUE(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_ADD.index:
                self.BINARY_ADD(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_AND.index:
                self.BINARY_AND(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_DIVIDE.index:
                self.BINARY_DIVIDE(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_FLOOR_DIVIDE.index:
                self.BINARY_FLOOR_DIVIDE(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_LSHIFT.index:
                self.BINARY_LSHIFT(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_MODULO.index:
                self.BINARY_MODULO(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_MULTIPLY.index:
                self.BINARY_MULTIPLY(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_OR.index:
                self.BINARY_OR(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_POWER.index:
                self.BINARY_POWER(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_RSHIFT.index:
                self.BINARY_RSHIFT(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_SUBSCR.index:
                self.BINARY_SUBSCR(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_SUBTRACT.index:
                self.BINARY_SUBTRACT(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_TRUE_DIVIDE.index:
                self.BINARY_TRUE_DIVIDE(oparg, next_instr)
            elif opcode == opcodedesc.BINARY_XOR.index:
                self.BINARY_XOR(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_CLASS.index:
                self.BUILD_CLASS(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_LIST.index:
                self.BUILD_LIST(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_LIST_FROM_ARG.index:
                self.BUILD_LIST_FROM_ARG(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_MAP.index:
                self.BUILD_MAP(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_SET.index:
                self.BUILD_SET(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_SLICE.index:
                self.BUILD_SLICE(oparg, next_instr)
            elif opcode == opcodedesc.BUILD_TUPLE.index:
                self.BUILD_TUPLE(oparg, next_instr)
            elif opcode == opcodedesc.CALL_FUNCTION.index:
                self.CALL_FUNCTION(oparg, next_instr)
            elif opcode == opcodedesc.CALL_FUNCTION_KW.index:
                self.CALL_FUNCTION_KW(oparg, next_instr)
            elif opcode == opcodedesc.CALL_FUNCTION_VAR.index:
                self.CALL_FUNCTION_VAR(oparg, next_instr)
            elif opcode == opcodedesc.CALL_FUNCTION_VAR_KW.index:
                self.CALL_FUNCTION_VAR_KW(oparg, next_instr)
            elif opcode == opcodedesc.CALL_METHOD.index:
>               self.CALL_METHOD(oparg, next_instr)

interpreter/pyopcode.py:276: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

f = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
oparg = 2, ignored = (177L,), n_args = 2, n_kwargs = 0, w_self = None

    @jit.unroll_safe
    def CALL_METHOD(f, oparg, *ignored):
        # opargs contains the arg, and kwarg count, excluding the implicit 'self'
        n_args = oparg & 0xff
        n_kwargs = (oparg >> 8) & 0xff
        w_self = f.peekvalue_maybe_none(n_args + (2 * n_kwargs))
        n = n_args + (w_self is not None)
    
        if not n_kwargs:
            w_callable = f.peekvalue(n_args + (2 * n_kwargs) + 1)
            w_result = f.space.call_valuestack(
>               w_callable, n, f, methodcall=w_self is not None, dropvalues=n_args + 2)

objspace/std/callmethod.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = StdObjSpace, w_func = <BuiltinFunction lockf>, nargs = 2
frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
dropvalues = 4, methodcall = False

    def call_valuestack(self, w_func, nargs, frame, dropvalues, methodcall=False):
        # methodcall is only used for better error messages in argument.py
        from pypy.interpreter.function import Function, Method, is_builtin_code
        if frame.get_is_being_profiled() and is_builtin_code(w_func):
            # XXX: this code is copied&pasted :-( from the slow path below
            # call_valuestack().
            args = frame.make_arguments(nargs)
            frame.dropvalues(dropvalues)
            return self.call_args_and_c_profile(frame, w_func, args)
    
        if not self.config.objspace.disable_call_speedhacks:
            # start of hack for performance
            if isinstance(w_func, Method):
                w_inst = w_func.w_instance
                if w_inst is not None:
                    w_func = w_func.w_function
                    # reuse callable stack place for w_inst
                    frame.settopvalue(w_inst, nargs)
                    nargs += 1
                    methodcall = True
                elif nargs > 0 and (
                    self.abstract_isinstance_w(frame.peekvalue(nargs-1),   #    :-(
                                               w_func.w_class)):
                    w_func = w_func.w_function
    
            if isinstance(w_func, Function):
                return w_func.funccall_valuestack(
>                       nargs, frame, methodcall=methodcall, dropvalues=dropvalues)

interpreter/baseobjspace.py:1243: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <BuiltinFunction lockf>, nargs = 2
frame = <pypy.objspace.std.frame.StdObjSpaceFrame executing <code object test_lockf, f...cos-x86-64/build/pypy/module/fcntl/test/test_fcntl.py:159]', line 1> at line 13
dropvalues = 4, methodcall = False

    def funccall_valuestack(self, nargs, frame, dropvalues, methodcall=False): # speed hack
        # methodcall is only for better error messages
        from pypy.interpreter import gateway
        from pypy.interpreter.pycode import PyCode
    
        code = self.getcode() # hook for the jit
        #
        if (jit.we_are_jitted() and code is self.space._code_of_sys_exc_info
                                and nargs == 0):
            frame.dropvalues(dropvalues)
            from pypy.module.sys.vm import exc_info_direct
            return exc_info_direct(self.space, frame)
        #
        fast_natural_arity = code.fast_natural_arity
        if nargs == fast_natural_arity:
            if nargs == 0:
                frame.dropvalues(dropvalues)
                assert isinstance(code, gateway.BuiltinCode0)
                return code.fastcall_0(self.space, self)
            elif nargs == 1:
                f_0 = frame.peekvalue(0)
                frame.dropvalues(dropvalues)
                assert isinstance(code, gateway.BuiltinCode1)
                return code.fastcall_1(self.space, self, f_0)
            elif nargs == 2:
                f_0 = frame.peekvalue(0)
                f_1 = frame.peekvalue(1)
                frame.dropvalues(dropvalues)
                assert isinstance(code, gateway.BuiltinCode2)
                return code.fastcall_2(self.space, self, f_1, f_0)
            elif nargs == 3:
                assert isinstance(code, gateway.BuiltinCode3)
                f_0 = frame.peekvalue(0)
                f_1 = frame.peekvalue(1)
                f_2 = frame.peekvalue(2)
                frame.dropvalues(dropvalues)
                return code.fastcall_3(self.space, self, f_2,
                                       f_1, f_0)
            elif nargs == 4:
                assert isinstance(code, gateway.BuiltinCode4)
                f_0 = frame.peekvalue(0)
                f_1 = frame.peekvalue(1)
                f_2 = frame.peekvalue(2)
                f_3 = frame.peekvalue(3)
                frame.dropvalues(dropvalues)
                return code.fastcall_4(self.space, self, f_3, f_2, f_1, f_0)
        elif (nargs | Code.FLATPYCALL) == fast_natural_arity:
            assert isinstance(code, PyCode)
            return self._flat_pycall(code, nargs, frame, dropvalues)
        elif fast_natural_arity & Code.FLATPYCALL:
            natural_arity = fast_natural_arity & 0xff
            if natural_arity > nargs >= natural_arity - len(self.defs_w):
                assert isinstance(code, PyCode)
                return self._flat_pycall_defaults(code, nargs, frame,
                                                  natural_arity - nargs, dropvalues)
        elif fast_natural_arity == Code.PASSTHROUGHARGS1 and nargs >= 1:
            assert isinstance(code, gateway.BuiltinCodePassThroughArguments1)
            w_obj = frame.peekvalue(nargs-1)
            args = frame.make_arguments(nargs-1)
            frame.dropvalues(dropvalues)
            return code.funcrun_obj(self, w_obj, args)
    
        args = frame.make_arguments(nargs, methodcall=methodcall)
        frame.dropvalues(dropvalues)
>       return self.call_args(args)

interpreter/function.py:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <BuiltinFunction lockf>
args = Arguments([<pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>, W_IntObject(6)])

    def call_args(self, args):
        # delegate activation to code
>       w_res = self.getcode().funcrun(self, args)

interpreter/function.py:68: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.interpreter.gateway.BuiltinCode object at 0x00007f7d29c79cc8>
func = <BuiltinFunction lockf>
args = Arguments([<pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>, W_IntObject(6)])

    def funcrun(self, func, args):
>       return BuiltinCode.funcrun_obj(self, func, None, args)

interpreter/gateway.py:781: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.interpreter.gateway.BuiltinCode object at 0x00007f7d29c79cc8>
func = <BuiltinFunction lockf>, w_obj = None
args = Arguments([<pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>, W_IntObject(6)])

    def funcrun_obj(self, func, w_obj, args):
        space = func.space
        activation = self.activation
        scope_w = args.parse_obj(w_obj, func.name, self.sig,
                                 func.defs_w, self.minargs)
        try:
            w_result = activation._run(space, scope_w)
        except DescrMismatch:
            if w_obj is not None:
                args = args.prepend(w_obj)
            return self._type_unwrap_mismatch(space, args)
        except Exception as e:
>           self.handle_exception(space, e)

interpreter/gateway.py:795: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.interpreter.gateway.BuiltinCode object at 0x00007f7d29c79cc8>
space = StdObjSpace
e = TypeError('expected ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_typ...LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }',)

    def handle_exception(self, space, e):
        try:
            if not we_are_translated():
                raise
            raise e
        except OperationError:
            raise
        except Exception as e:      # general fall-back
            from pypy.interpreter import error
>           raise error.get_converted_unexpected_exception(space, e)

interpreter/gateway.py:819: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.interpreter.gateway.BuiltinCode object at 0x00007f7d29c79cc8>
func = <BuiltinFunction lockf>, w_obj = None
args = Arguments([<pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>, W_IntObject(6)])

    def funcrun_obj(self, func, w_obj, args):
        space = func.space
        activation = self.activation
        scope_w = args.parse_obj(w_obj, func.name, self.sig,
                                 func.defs_w, self.minargs)
        try:
>           w_result = activation._run(space, scope_w)

interpreter/gateway.py:789: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypy.interpreter.gateway.BuiltinActivation_UwS_ObjSpace_W_Root_int_int_int_int object at 0x00007f7d29c79e50>
space = StdObjSpace
scope_w = [<pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>, W_IntObject(6), W_IntObject(0), W_IntObject(0), W_IntObject(0)]

    def _run(self, space, scope_w):
>       return self.behavior(space, scope_w[0], space.gateway_int_w(scope_w[1]), space.gateway_int_w(scope_w[2]), space.gateway_int_w(scope_w[3]), space.gateway_int_w(scope_w[4]))

<2399-codegen /Users/matti/build-worker-x86_64/own-macos-x86-64/build/rpython/tool/sourcetools.py:174>:3: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

space = StdObjSpace
w_fd = <pypy.module._file.interp_file.W_File object at 0x00007f7d29c73bb0>
op = 8L, length = 0, start = 0, whence = 0

    @unwrap_spec(op=int, length=int, start=int, whence=int)
    def lockf(space, w_fd, op, length=0, start=0, whence=0):
        """lockf (fd, operation, length=0, start=0, whence=0)
    
        This is essentially a wrapper around the fcntl() locking calls.  fd is the
        file descriptor of the file to lock or unlock, and operation is one of the
        following values:
    
        LOCK_UN - unlock
        LOCK_SH - acquire a shared lock
        LOCK_EX - acquire an exclusive lock
    
        When operation is LOCK_SH or LOCK_EX, it can also be bit-wise OR'd with
        LOCK_NB to avoid blocking on lock acquisition.  If LOCK_NB is used and the
        lock cannot be acquired, an IOError will be raised and the exception will
        have an errno attribute set to EACCES or EAGAIN (depending on the
        operating system -- for portability, check for either value).
    
        length is the number of bytes to lock, with the default meaning to lock to
        EOF.  start is the byte offset, relative to whence, to that the lock
        starts.  whence is as with fileobj.seek(), specifically:
    
        0 - relative to the start of the file (SEEK_SET)
        1 - relative to the current buffer position (SEEK_CUR)
        2 - relative to the end of the file (SEEK_END)"""
    
        fd = space.c_filedescriptor_w(w_fd)
    
        if op == LOCK_UN:
            l_type = F_UNLCK
        elif op & LOCK_SH:
            l_type = F_RDLCK
        elif op & LOCK_EX:
            l_type = F_WRLCK
        else:
            raise oefmt(space.w_ValueError, "unrecognized lock operation")
    
        op = [F_SETLKW, F_SETLK][int(bool(op & LOCK_NB))]
        op = rffi.cast(rffi.INT, op)        # C long => C int
    
        l = lltype.malloc(_flock.TO, flavor='raw')
        try:
            rffi.setintfield(l, 'c_l_type', l_type)
            rffi.setintfield(l, 'c_l_start', int(start))
            rffi.setintfield(l, 'c_l_len', int(length))
            rffi.setintfield(l, 'c_l_whence', int(whence))
>           rv = fcntl_flock(fd, op, l)

module/fcntl/interp_fcntl.py:195: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

args = (14, 8L, <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>)
real_args = (14L, 8L, <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>)
to_free = (), i = 2

    def wrapper(*args):
        assert len(args) == nb_args
        real_args = ()
        # XXX 'to_free' leaks if an allocation fails with MemoryError
        # and was not the first in this function
        to_free = ()
        for i, TARGET in unrolling_arg_tps:
            arg = args[i]
            if TARGET == CCHARP or TARGET is VOIDP:
                if arg is None:
                    from rpython.rtyper.annlowlevel import llstr
                    arg = lltype.nullptr(CCHARP.TO)   # None => (char*)NULL
                    to_free = to_free + (arg, llstr(None), '\x04')
                elif isinstance(arg, str):
                    tup = get_nonmovingbuffer_ll_final_null(arg)
                    to_free = to_free + tup
                    arg = tup[0]
                elif isinstance(arg, unicode):
                    _oops()
            elif TARGET == CWCHARP:
                if arg is None:
                    arg = lltype.nullptr(CWCHARP.TO)   # None => (wchar_t*)NULL
                    to_free = to_free + (arg,)
                elif isinstance(arg, unicode):
                    arg = unicode2wcharp(arg)
                    to_free = to_free + (arg,)
            elif _isfunctype(TARGET) and not _isllptr(arg):
                # XXX pass additional arguments
                use_gil = invoke_around_handlers
                arg = llhelper(TARGET, _make_wrapper_for(TARGET, arg,
                                                         callbackholder,
                                                         use_gil))
            else:
                SOURCE = lltype.typeOf(arg)
                if SOURCE != TARGET:
                    if TARGET is lltype.Float:
                        arg = float(arg)
                    elif ((isinstance(SOURCE, lltype.Number)
                           or SOURCE is lltype.Bool)
                      and (isinstance(TARGET, lltype.Number)
                           or TARGET is lltype.Bool)):
                        arg = cast(TARGET, arg)
            real_args = real_args + (arg,)
>       res = call_external_function(*real_args)

../rpython/rtyper/lltypesystem/rffi.py:321: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a0 = 14L, a1 = 8L
a2 = <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>

    def call_external_function(a0, a1, a2):
        rgil.release()
        # NB. it is essential that no exception checking occurs here!
        if 1:
            from rpython.rlib import rposix
            rposix._errno_before(1)
        if we_are_translated():
            res = funcptr(a0, a1, a2)
        else:
            try:    # only when non-translated
>               res = funcptr(a0, a1, a2)

<2040-codegen /Users/matti/build-worker-x86_64/own-macos-x86-64/build/rpython/rtyper/lltypesystem/rffi.py:217>:13: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <* fn fcntl>
args = (14L, 8L, <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>)
rffi = <module 'rpython.rtyper.lltypesystem.rffi' from '/Users/matti/build-worker-x86_64/own-macos-x86-64/build/rpython/rtyper/lltypesystem/rffi.pyc'>
i = 2
a = <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>

    def __call__(self, *args):
        from rpython.rtyper.lltypesystem import rffi
        if isinstance(self._T, FuncType):
            if len(args) != len(self._T.ARGS):
                raise TypeError("calling %r with wrong argument number: %r" %
                                (self._T, args))
            for i, a, ARG in zip(range(len(self._T.ARGS)), args, self._T.ARGS):
                if typeOf(a) != ARG:
                    # ARG could be Void
                    if ARG == Void:
                        try:
                            value = getattr(self._obj, '_void' + str(i))
                        except AttributeError:
                            pass
                        else:
                            assert a == value
                    # None is acceptable for any pointer
                    elif isinstance(ARG, Ptr) and a is None:
                        pass
                    # Any pointer is convertible to void*
                    elif ARG is rffi.VOIDP and isinstance(typeOf(a), Ptr):
                        pass
                    # special case: ARG can be a container type, in which
                    # case a should be a pointer to it.  This must also be
                    # special-cased in the backends.
                    elif (isinstance(ARG, ContainerType) and
                          typeOf(a) == Ptr(ARG)):
                        pass
                    else:
                        args_repr = [typeOf(arg) for arg in args]
                        raise TypeError("calling %r with wrong argument "
                                          "types: %r" % (self._T, args_repr))
            callb = self._obj._callable
            if callb is None:
                raise RuntimeError("calling undefined function")
>           return callb(*args)

../rpython/rtyper/lltypesystem/lltype.py:1384: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <rpython.rtyper.lltypesystem.ll2ctypes.LL2CtypesCallable object at 0x00007f7cc891f2f0>
argvalues = (14L, 8L, <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>)
cfunc = <ctypes._FuncPtr object at 0x00007f7d29c81b50>

    def __call__(self, *argvalues):
        with rlock:
            if self.trampoline is None:
                # lazily build the corresponding ctypes function object
                cfunc = get_ctypes_callable(self.funcptr, self.calling_conv,
                                            self.natural_arity)
                self.trampoline = get_ctypes_trampoline(self.FUNCTYPE, cfunc, self.natural_arity)
        # perform the call
>       return self.trampoline(*argvalues)

../rpython/rtyper/lltypesystem/ll2ctypes.py:1342: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

argvalues = (14L, 8L, <* DEAD Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }>)
cargs = [14L, 8L], i = 2
cvalue = <_ctypes.pointer.LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } object at 0x00007f7d29c81ac0>

    def invoke_via_ctypes(*argvalues):
        global _callback_exc_info
        cargs = []
        for i in range(len(argvalues)):
            if i not in void_arguments:
                cvalue = lltype2ctypes(argvalues[i])
                if i in container_arguments:
                    cvalue = cvalue.contents
                if natural_arity > 0 and i >= natural_arity:
>                   cvalue = cfunc.extraargs[i - natural_arity](cvalue)

../rpython/rtyper/lltypesystem/ll2ctypes.py:1370: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <_ctypes.pointer.LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } object at 0x00007f7d29c880f8>
value = <_ctypes.pointer.LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } object at 0x00007f7d29c81ac0>

    def __init__(self, value=None):
        if not hasattr(self, '_buffer'):
            self._buffer = ffiarray(1, autofree=True)
        if value is not None:
>           self.contents = value

../../../../oss/pypy-x86_64-buildbot/lib_pypy/_ctypes/pointer.py:73: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <_ctypes.pointer.LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } object at 0x00007f7d29c880f8>
value = <_ctypes.pointer.LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } object at 0x00007f7d29c81ac0>

    def setcontents(self, value):
        if not isinstance(value, self._type_):
            raise TypeError("expected %s instead of %s" % (
>               self._type_.__name__, type(value).__name__))
E           TypeError: expected ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence } instead of LP_ctypes_Struct flock { c_l_start, c_l_len, c_l_pid, c_l_type, c_l_whence }

../../../../oss/pypy-x86_64-buildbot/lib_pypy/_ctypes/pointer.py:106: TypeError
builder: own-macos-x86-64 build #1216+
test: pypy/module/fcntl/test/test_fcntl.py::AppTestFcntl::()::test_lockf