Project

General

Profile

Actions

Bug #9302

closed

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

Added by normalperson (Eric Wong) over 10 years ago. Updated over 9 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.2.0dev (2013-12-26 trunk 44439) [x86_64-linux]
[ruby-core:59324]

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)


Files

Actions #1

Updated by Anonymous about 10 years 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] [ruby-core:59324]

  • test/thread/test_queue.rb: add test

Actions #2

Updated by Anonymous about 10 years ago

  • Status changed from Closed to Open
  • Assignee set to naruse (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

Updated by naruse (Yui NARUSE) about 10 years 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

Updated by hsbt (Hiroshi SHIBATA) over 9 years ago

  • Status changed from Open to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0