1. 26 Jan, 2015 12 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 · 1ca9392c
      Victor Stinner authored
      _WaitCancelFuture futures
      1ca9392c
    • Victor Stinner's avatar
    • Victor Stinner's avatar
      Issue #23095, asyncio: Rewrite _WaitHandleFuture.cancel() · d0a28dee
      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.
      d0a28dee
    • Victor Stinner's avatar
      asyncio: pyflakes, remove unused import · 442b0adc
      Victor Stinner authored
      tests: Remove unused function; inline another function
      442b0adc
    • Victor Stinner's avatar
      asyncio: Enhance BaseProactorEventLoop._loop_self_reading() · cd0f7f98
      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.
      cd0f7f98
    • Gregory P. Smith's avatar
      Add the command line to the AssertionError raised by test.script_helper's · b5684c48
      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. :)
      b5684c48
  6. 20 Jan, 2015 2 commits
  7. 18 Jan, 2015 4 commits