1. 22 Dec, 2017 4 commits
    • Jason Madden's avatar
      Right dep for test-pypy-libuv [skip ci] · 9afe3368
      Jason Madden authored
      9afe3368
    • Jason Madden's avatar
      Hopefully solve the test__os issue. It turned out to be that calling uv_close... · 6c38d576
      Jason Madden authored
      Hopefully solve the test__os issue. It turned out to be that calling uv_close at random GC times is a very bad idea under libuv. See the comment. Try enabling pypy+libuv on posix and windows; it's working on darwin for me.
      6c38d576
    • Jason Madden's avatar
      Fix some tests. · 12e5e751
      Jason Madden authored
      12e5e751
    • Jason Madden's avatar
      Checkpoint on making io watchers deterministic · 8eb62985
      Jason Madden authored
      By closing them when we're done, we can remove reliance on GC to clean
      up multiplexed watchers and solve problems for PyPy and Windows (and
      probably eventually simplify the handle cleanup we were doing.)
      
      This makes many more tests on PyPy pass on Darwin; down from a score
      of failures to about 4, but a baffling 4. test__os:TestOS_nb times
      out; investigation shows that both the read and write sides of the
      pipe are waiting on events, both are in libuv, and the write side
      should be writable, but it's not getting an event. Not clear why this
      is. I also see it with CPython 3.6, and I don't think I did before.
      8eb62985
  2. 15 Dec, 2017 4 commits
    • Jason Madden's avatar
      Changes for pylint 1.8 [skip appveyor] · fa3b489f
      Jason Madden authored
      fa3b489f
    • Jason Madden's avatar
      Merge pull request #1056 from gevent/libuv-py36-win · 01f5ccb7
      Jason Madden authored
      Support libuv under CPython 3.6 on Windows
      01f5ccb7
    • Jason Madden's avatar
      Fix an occasional crash in monkey patched 3.6/test_socket.py · b2e6142c
      Jason Madden authored
      First the crash report:
      
      ```
        testInterruptedRecvmsgTimeout (__main__.InterruptedRecvTimeoutTest) ... Traceback (most recent call last):
          File "/home/travis/build/gevent/gevent/src/gevent/_ffi/loop.py", line 83, in python_callback
            def python_callback(self, handle, revents):
          File "/home/travis/build/gevent/gevent/src/greentest/3.6/test_socket.py", line 3698, in <lambda>
            lambda signum, frame: 1 / 0)
        ZeroDivisionError: division by zero
        Fri Dec 15 16:09:36 2017
        ok
        testInterruptedSendTimeout (__main__.InterruptedSendTimeoutTest) ... Fatal Python error: ffi.from_handle() detected that the address passed points to garbage. If it is really the result of ffi.new_handle(), then the Python object has already been garbage collected
      
        Thread 0x00002b26d4c01700 (most recent call first):
          File "/home/travis/build/gevent/gevent/src/gevent/_threading.py", line 152 in wait
          File "/home/travis/build/gevent/gevent/src/gevent/_threading.py", line 436 in get
          File "/home/travis/build/gevent/gevent/src/gevent/threadpool.py", line 200 in _worker
      
        Thread 0x00002b26d4a00700 (most recent call first):
          File "/home/travis/build/gevent/gevent/src/gevent/_threading.py", line 152 in wait
          File "/home/travis/build/gevent/gevent/src/gevent/_threading.py", line 436 in get
          File "/home/travis/build/gevent/gevent/src/gevent/threadpool.py", line 200 in _worker
      
        Current thread 0x00002b26cc7b2a00 (most recent call first):
          File "/home/travis/build/gevent/gevent/src/gevent/_ffi/loop.py", line 178 in python_stop
          File "/home/travis/build/gevent/gevent/src/gevent/libuv/loop.py", line 289 in run
          File "/home/travis/build/gevent/gevent/src/gevent/hub.py", line 688 in run
      ```
      
      The main problem turned out to be the way in which libuv reports
      signals at random times, much worse than the way libev does. This led
      to callback functions unexpectedly returning 0, because that's the
      default for an unhandled exception or an onerror handler that returns
      None. That in turn led to calls to python_stop that we weren't
      expecting using a handle that had already been deallocated.
      
      The fix is to both be defensive about what handles we try to use, and
      to be more explicit about our error returns.
      b2e6142c
    • Jason Madden's avatar
      Disable pypy on appveyor again because it takes too long. I need to make sure... · a0bda58b
      Jason Madden authored
      Disable pypy on appveyor again because it takes too long. I need to make sure it runs on POSIX first.
      a0bda58b
  3. 14 Dec, 2017 3 commits
  4. 13 Dec, 2017 7 commits
  5. 12 Dec, 2017 3 commits
  6. 11 Dec, 2017 5 commits
  7. 09 Dec, 2017 3 commits
  8. 08 Dec, 2017 11 commits