[#29233] [Bug #3085] Time dumping/loading using Psych — Tomo Kazahaya <redmine@...>
Bug #3085: Time dumping/loading using Psych
Issue #3085 has been updated by Aaron Patterson.
2010/4/4 Aaron Patterson <redmine@ruby-lang.org>:
[#29247] [Bug:trunk] matrix test failures — Tanaka Akira <akr@...>
matrix test fails as follows.
[#29255] [Bug #3092] IO Broken with Latest Windows — Charlie Savage <redmine@...>
Bug #3092: IO Broken with Latest Windows
[#29270] Proposal: Module#thunk_method — Charles Oliver Nutter <headius@...>
Many people use define_method solely so they can define a new method
On Apr 5, 2010, at 5:42 PM, Charles Oliver Nutter wrote:
Joshua Ballanco wrote:
Because often the pattern is to do the calculation and then define a
On Apr 6, 2010, at 4:17 PM, Charles Oliver Nutter wrote:
[#29287] [Bug #3102] Rubygems should avoid deprecated yaml api — Aaron Patterson <redmine@...>
Bug #3102: Rubygems should avoid deprecated yaml api
[#29291] [Bug #3104] Random: seeding issues — Marc-Andre Lafortune <redmine@...>
Bug #3104: Random: seeding issues
[#29293] URI.(un)escape deprecated? — Marc-Andre Lafortune <ruby-core-mailing-list@...>
Hi.
2010/4/7 Marc-Andre Lafortune <ruby-core-mailing-list@marc-andre.ca>:
On Thu, Apr 8, 2010 at 5:22 PM, Tanaka Akira <akr@fsij.org> wrote:
> So, Yui, could you please tell us what motivated this change and what
2010/4/9 NARUSE, Yui <naruse@airemix.jp>:
On Thu, Apr 8, 2010 at 10:31 PM, Tanaka Akira <akr@fsij.org> wrote:
2010/4/9 Austin Ziegler <halostatue@gmail.com>:
Hi,
[#29295] [Bug #3105] seg faults and bus errors with ruby 1.8.7 p249 — Greg Ferguson <redmine@...>
Bug #3105: seg faults and bus errors with ruby 1.8.7 p249
[#29313] [Bug #3112] require "yaml" doesn't use psych as default — Usaku NAKAMURA <redmine@...>
Bug #3112: require "yaml" doesn't use psych as default
Issue #3112 has been updated by Yui NARUSE.
On Thu, Apr 08, 2010 at 02:06:55PM +0900, Yui NARUSE wrote:
On 4/8/10, Aaron Patterson <aaron@tenderlovemaking.com> wrote:
First of all, people want compatibility.
I found Aaron added YAML.quick_emit to Psych, thank.
On Sat, Apr 10, 2010 at 07:11:28PM +0900, NARUSE, Yui wrote:
(2010/04/11 8:48), Aaron Patterson wrote:
On Sun, Apr 11, 2010 at 09:20:15AM +0900, NARUSE, Yui wrote:
Issue #3112 has been updated by Anshul Khandelwal.
[#29427] [Bug #3124] SocketError on SnowLeopard (during make test-all) — Aaron Patterson <redmine@...>
Bug #3124: SocketError on SnowLeopard (during make test-all)
[#29447] [RubySpec #3128] Randomness specs — Marc-Andre Lafortune <redmine@...>
RubySpec #3128: Randomness specs
[#29462] [Feature #3131] add Kernel#Hash() method like Kernel#Array() — Suraj Kurapati <redmine@...>
Feature #3131: add Kernel#Hash() method like Kernel#Array()
[#29464] [Bug #3132] …/nokogiri-1.4.1/ext/nokogiri/nokogiri.bundle: [BUG] Bus Error — Ashley Williams <redmine@...>
Bug #3132: …/nokogiri-1.4.1/ext/nokogiri/nokogiri.bundle: [BUG] Bus Error
[#29486] [Bug #3140] gem activation has changed between 1.8 and 1.9 — Aaron Patterson <redmine@...>
Bug #3140: gem activation has changed between 1.8 and 1.9
Issue #3140 has been updated by Aaron Patterson.
Hi,
We are about to ship a version of Ruby with a built in package manager with
On Fri, Jul 2, 2010 at 6:19 PM, Yehuda Katz <wycats@gmail.com> wrote:
On Sat, Jul 03, 2010 at 07:48:04AM +0900, Luis Lavena wrote:
After a brief discussion with Eric Hodel about this, there are a few questions before we can figure out how to solve this:
Is there any comment on this? This is a big bug in 1.9.2 that we'd like to get fixed as soon as we can, but I need some input on it.
I wrote this original code in gem_prelude.
Hi,
See comment on patch below. Other than my comments, I'm fine with this.
Since no one has responded, nobu, can you go ahead and commit it?
Issue #3140 has been updated by Yusuke Endoh.
Issue #3140 has been updated by Yusuke Endoh.
> I've commited the patch to trunk.
Hi,
> Roger, could you re-try to build from scratch? ould you apply
> I'll try with 1_9_2 next.
2010/7/14 Roger Pack <rogerdpack2@gmail.com>:
On Sun, Jul 11, 2010 at 10:23 AM, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
Uh-oh, rc2 has been released.
On Sun, Jul 11, 2010 at 12:26 PM, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
Issue #3140 has been updated by Yehuda Katz.
Hi,
Hi,
> If you 'gem install mongrel' on 1.9, it will fail (for a valid reason). The directory is not removed because that would prevent users from debugging the build process by reading 'gem_make.out' that is left there for this purpose.
[#29528] [Bug #3150] net/https peer verification doesn't do anything — Hongli Lai <redmine@...>
Bug #3150: net/https peer verification doesn't do anything
[#29578] [Bug #3163] SyntaxError when using variable which is also a method in current scope with a Symbol argument — Benoit Daloze <redmine@...>
Bug #3163: SyntaxError when using variable which is also a method in current scope with a Symbol argument
Issue #3163 has been updated by caleb clausen.
On 18 April 2010 02:06, caleb clausen <redmine@ruby-lang.org> wrote:
On 4/17/10, Benoit Daloze <eregontp@gmail.com> wrote:
On 18.04.10 04:34, Caleb Clausen wrote:
On 4/17/10, Kornelius Kalnbach <murphy@rubychan.de> wrote:
On 17.04.10 20:26, Benoit Daloze wrote:
>as in a ? b : c.
On 18.04.10 16:10, Benoit Daloze wrote:
[#29601] [Bug #3167] RDoc issues in interactive mode — Benoit Daloze <redmine@...>
Bug #3167: RDoc issues in interactive mode
[#29608] [Bug #3169] RDoc crossref confused by instance and class methods having same name — Marc-Andre Lafortune <redmine@...>
Bug #3169: RDoc crossref confused by instance and class methods having same name
Issue #3169 has been updated by Eric Hodel.
On 19.04.10 05:36, Eric Hodel wrote:
On Apr 18, 2010, at 21:28, Kornelius Kalnbach wrote:
[#29641] [Feature #3176] Thread#priority= should actually do something — caleb clausen <redmine@...>
Feature #3176: Thread#priority= should actually do something
Issue #3176 has been updated by Yusuke Endoh.
> Issue #3176 has been updated by Yusuke Endoh.
On 5/15/10, KOSAKI Motohiro <kosaki.motohiro@gmail.com> wrote:
Issue #3176 has been updated by caleb clausen.
> I tried to make it use pthread_setschedparam on linux. That would seem to be
Issue #3176 has been updated by caleb clausen.
Issue #3176 has been updated by caleb clausen.
[#29670] "include X; include Y" vs "include X, Y" — Daniel Berger <djberg96@...>
Hi,
[#29677] anonymous Module#name returns nil in 1.9 — Ryan Davis <ryand-ruby@...>
Is this intentional?
[#29710] [Bug #3185] File.expand_path repeats forward slashes at the beginning of the path — Brian Ford <redmine@...>
Bug #3185: File.expand_path repeats forward slashes at the beginning of the path
Issue #3185 has been updated by Brian Ford.
[#29745] [Bug #3191] imap exits on login with invalid credentials — Karl Baum <redmine@...>
Bug #3191: imap exits on login with invalid credentials
[#29812] identifying process of show stoppers for 1.9.2 release — Yusuke ENDOH <mame@...>
Hi, all
Yusuke ENDOH wrote:
[#29835] [Bug #3212] ConditionVariable may become inconsistent for interrupted threads — Sylvain Joyeux <redmine@...>
Bug #3212: ConditionVariable may become inconsistent for interrupted threads
Issue #3212 has been updated by Sylvain Joyeux.
Hi,
On 5/5/10, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
On 5/6/10, Yusuke ENDOH <mame@tsg.ne.jp> wrote:
Hi,
[#29845] [Bug #3215] Windows: IO.popen returns "handle is invalid" — Christian Höltje <redmine@...>
Bug #3215: Windows: IO.popen returns "handle is invalid"
[#29863] [Bug #3216] #join in thwait.rb only waits for first thread — Roger Pack <redmine@...>
Bug #3216: #join in thwait.rb only waits for first thread
[#29868] [Bug:trunk] assert now passes non-boolean result — Nobuyoshi Nakada <nobu@...>
Hi,
Issue #3219 has been updated by caleb clausen.
[#29874] [Bug #3220] bug in gc.c — Aaron Patterson <redmine@...>
Bug #3220: bug in gc.c
[ruby-core:29641] [Feature #3176] Thread#priority= should actually do something
Feature #3176: Thread#priority= should actually do something
http://redmine.ruby-lang.org/issues/show/3176
Author: caleb clausen
Status: Open, Priority: Normal
Category: core
Currently, Thread#priority= doesn't seem to do anything useful. See #1169 for more discussion of this. Here's a short program which demonstrates Thread#priority= not working, adapted from one in that issue:
$ cat thrprio.rb
c1 = c2 = 0
go=nil
t2 = Thread.new { 1 until go; loop { c2 += 1 } }
t2.priority = -2
t1 = Thread.new { 1 until go; loop { c1 += 1 } }
t1.priority = -1
go=true
sleep 5
t1.kill
t2.kill
puts "#{c1} #{c2} #{(c1-c2).to_f/(c1+c2)} #{c1 > c2}"
$ ruby thrprio.rb
17102855 17276166 -0.005041184855147562 false
$ ruby thrprio.rb
16839456 16977800 -0.0040909291989864585 false
$ ruby thrprio.rb
17063114 17248978 -0.0054168658675781125 false
$ ruby thrprio.rb
16809137 17019727 -0.006225157309450296 false
When I run it, the 2 counts have very nearly the same value... to within <1%. I see c1 < c2 almost always. Occasionally, I see c2 > c2. If thread priorities are working, c1 should be much larger than c2. (In ruby 1.8, in which Thread#priority= works, c1 is several orders of magnitude larger than c2.)
Depending on your OS and what order the threads are started in, you may see the reverse situation, where c1 > c2, but occasionally c1 < c2. This is still wrong, tho. The difference between c1 and c2 should be very large.
In the discussion below, GIL means the global interpreter lock (global_vm_lock).
Also, keep in mind that every mutex has inside it somewhere a queue which holds a list of the threads waiting for the mutex.
I have a theory that there's an interaction between the scheduler and the GIL which causes priorities to be effectively ignored. Imagine this:
There are 2 threads running, A and B. A.priority > B.priority.
Initially, A runs (so it holds GIL).
B tries to run, but has to wait on GIL.
After a short time, the scheduler forces a context switch.
So now A unlocks GIL, planning to immediately lock it again. This yields time to other threads.
But before A can lock GIL, B is scheduled (since it was at the head of the queue waiting for the GIL).
Now B owns GIL.
A tries to lock GIL, but can't obtain it, so it waits for it to be available.
After another timeslice, B yields time back to A in the same way.
...and so on
So, A and B are effectively alternating timeslices, and each gets roughly equal amounts of time. Even tho A should have a higher priority, and should get much more time. If the OS uses priority queues rather than normal fifo queues for the internal queue inside a mutex, then there would be no problem. However, I strongly suspect that most operating systems use fifo queues within their mutex implementations.
So far, this is a theory. I have no certain proof. I have poked around in the pthreads implementation inside glibc, and concluded that mutexes in glibc do seem to use fifo queues (not priority queues) internally.
I had assumed that thread_timer() in thread_pthread.c is what causes thread switches to happen... however, as I look at it more closely, I now suspect that that is not the case. I don't know where context switches are going on... but I still think the overall theory is correct.
If I'm right, then this might be fixable by making timeslices variable length, instead of always 10 ms. Lower priority threads would get shorter timeslices. Alternatively, high priority threads could get several timeslices in a row, and lower priority threads only one. There may well be even better ways to address the problem.
Yusuke, I've tried to make my explanation as clear as possible. Please let me know if it's still hard to understand.
----------------------------------------
http://redmine.ruby-lang.org