1. 26 Jan, 2015 3 commits
  2. 25 Jan, 2015 4 commits
  3. 23 Jan, 2015 6 commits
  4. 22 Jan, 2015 6 commits
  5. 21 Jan, 2015 6 commits
    • Victor Stinner's avatar
      Issue #23095, asyncio: IocpProactor.close() must not cancel pending · d9374efa
      Victor Stinner authored
      _WaitCancelFuture futures
      d9374efa
    • Victor Stinner's avatar
    • Victor Stinner's avatar
      Issue #23095, asyncio: Rewrite _WaitHandleFuture.cancel() · a9459bdc
      Victor Stinner authored
      This change fixes a race conditon related to _WaitHandleFuture.cancel() leading
      to Python crash or "GetQueuedCompletionStatus() returned an unexpected event"
      logs. Before, the overlapped object was destroyed too early, it was possible
      that the wait completed whereas the overlapped object was already destroyed.
      Sometimes, a different overlapped was allocated at the same address, leading to
      unexpected completition.
      
      _WaitHandleFuture.cancel() now waits until the wait is cancelled to clear its
      reference to the overlapped object. To wait until the cancellation is done,
      UnregisterWaitEx() is used with an event instead of UnregisterWait().
      
      To wait for this event, a new _WaitCancelFuture class was added. It's a
      simplified version of _WaitCancelFuture. For example, its cancel() method calls
      UnregisterWait(), not UnregisterWaitEx(). _WaitCancelFuture should not be
      cancelled.
      
      The overlapped object is kept alive in _WaitHandleFuture until the wait is
      unregistered.
      
      Other changes:
      
      * Add _overlapped.UnregisterWaitEx()
      * Remove fast-path in IocpProactor.wait_for_handle() to immediatly set the
        result if the wait already completed. I'm not sure that it's safe to
        call immediatly UnregisterWaitEx() before the completion was signaled.
      * Add IocpProactor._unregistered() to forget an overlapped which may never be
        signaled, but may be signaled for the next loop iteration. It avoids to
        block forever IocpProactor.close() if a wait was cancelled, and it may also
        avoid some "... unexpected event ..." warnings.
      a9459bdc
    • Victor Stinner's avatar
      asyncio: pyflakes, remove unused import · f02163d1
      Victor Stinner authored
      tests: Remove unused function; inline another function
      f02163d1
    • Victor Stinner's avatar
      asyncio: Enhance BaseProactorEventLoop._loop_self_reading() · 54bde280
      Victor Stinner authored
      * Handle correctly CancelledError: just exit
      * On error, log the exception and exit
      
      Don't try to close the event loop, it is probably running and so it cannot be
      closed.
      54bde280
    • Gregory P. Smith's avatar
      Add the command line to the AssertionError raised by test.script_helper's · 7bb7579d
      Gregory P. Smith authored
      Python subprocess failure assertion error messages for easier debugging.
      
      Adds a unittest for test.script_helper to confirm that this code works as
      it is otherwise uncovered by an already passing test suite that uses it. :)
      7bb7579d
  6. 20 Jan, 2015 2 commits
  7. 18 Jan, 2015 6 commits
  8. 17 Jan, 2015 2 commits
  9. 15 Jan, 2015 5 commits