Bug #9302

[PATCH] thread: fix deadlock/freeze on SizedQueue#push

Added by Eric Wong over 1 year ago. Updated about 1 year ago.

[ruby-core:59324]
Status:Closed
Priority:Normal
Assignee:Yui NARUSE
ruby -v:ruby 2.2.0dev (2013-12-26 trunk 44439) [x86_64-linux] Backport:1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE

Description

SizedQueue#push needs to check the thread list for threads
waiting on enqueue. Checking the wrong thread list leads
strange/surprising behavior when the the queue is full.

This needs to be backported to 2.1.0 (not 2.0.0 or earlier)

0001-thread-fix-deadlock-freeze-on-SizedQueue-push.patch Magnifier (1.73 KB) Eric Wong, 12/26/2013 07:07 PM

Associated revisions

Revision 44583
Added by Charlie Somerville over 1 year ago

  • ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS
    instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong.
    [Bug #9302]

  • test/thread/test_queue.rb: add test

Revision 44583
Added by Charlie Somerville over 1 year ago

  • ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS
    instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong.
    [Bug #9302]

  • test/thread/test_queue.rb: add test

History

#1 Updated by Charlie Somerville over 1 year ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r44583.


  • ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS
    instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong.
    [Bug #9302]

  • test/thread/test_queue.rb: add test

#2 Updated by Charlie Somerville over 1 year ago

  • Status changed from Closed to Open
  • Assignee set to Yui NARUSE
  • % Done changed from 100 to 0
  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED

#3 Updated by Yui NARUSE over 1 year ago

  • Backport changed from 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE

#4 Updated by Hiroshi SHIBATA about 1 year ago

  • Status changed from Open to Closed

Also available in: Atom PDF