[#36679] [Ruby 1.9 - Bug #4814][Open] minitest 2.2.x and test/unit do not get along — Ryan Davis <ryand-ruby@...>
[#36707] [Ruby 1.9 - Feature #4818][Open] Add method marshalable? — Joey Zhou <yimutang@...>
[#36711] [Ruby 1.9 - Bug #4821][Open] Random Segfaults (in start_thread?) — Ivan Bortko <b2630639@...>
[#36714] [Ruby 1.9 - Feature #4822][Open] String#capitalize improvements — Anurag Priyam <anurag08priyam@...>
[#36720] Direct modifications to RubyGems in trunk? — Luis Lavena <luislavena@...>
Hello,
[#36730] [Ruby 1.9 - Feature #4824][Open] Provide method Kernel#executed? — Lazaridis Ilias <ilias@...>
On Fri, Jun 10, 2011 at 07:20:32AM +0900, Rocky Bernstein wrote:
On Fri, Jun 10, 2011 at 10:03 AM, Cezary <cezary.baginski@gmail.com> wrote:
On Sat, Jun 11, 2011 at 11:20:31AM +0900, Rocky Bernstein wrote:
On Mon, Jun 6, 2011 at 7:09 AM, Rodrigo Rosenfeld Rosas
[#36741] [Ruby 1.9 - Bug #4828][Open] crash in test_thread_instance_variable — Motohiro KOSAKI <kosaki.motohiro@...>
[#36750] [Ruby 1.9 - Feature #4830][Open] Provide Default Variables for Array#each and other iterators — Lazaridis Ilias <ilias@...>
[#36764] [Ruby 1.9 - Feature #4831][Open] Integer#prime_factors — Yusuke Endoh <mame@...>
[#36785] [Ruby 1.9 - Feature #4840][Open] Allow returning from require — Rodrigo Rosenfeld Rosas <rr.rosas@...>
Hello,
Hi,
Em 23-07-2012 10:12, mame (Yusuke Endoh) escreveu:
On Jun 6, 2011, at 10:11 AM, Rodrigo Rosenfeld Rosas wrote:
On 07/06/2011, at 12:18 AM, Michael Edgar wrote:
(2012/07/24 0:44), alexeymuranov (Alexey Muranov) wrote:
[#36787] [Ruby 1.9 - Bug #4841][Open] WEBrick threading leads to infinite loop — Peak Xu <peak.xu+ruby@...>
[#36799] [Ruby 1.9 - Feature #4845][Open] Provide Class#cb_object_instantiated_from_literal(object) — Lazaridis Ilias <ilias@...>
[#36834] [Ruby 1.9 - Feature #3905] rb_clear_cache_by_class() called often during GC for non-blocking I/O — Charles Nutter <headius@...>
Charles Nutter <headius@headius.com> wrote:
On Wed, Jun 8, 2011 at 4:00 PM, Eric Wong <normalperson@yhbt.net> wrote:
Charles Oliver Nutter <headius@headius.com> wrote:
[#36863] Object#trust vs Object#taint — Aaron Patterson <aaron@...>
Hi,
Hi,
On Thu, Jun 09, 2011 at 07:49:06AM +0900, Yukihiro Matsumoto wrote:
On Wed, Jun 8, 2011 at 8:19 PM, Aaron Patterson
Hi,
On Thu, Jun 9, 2011 at 12:46 AM, Shugo Maeda <shugo@ruby-lang.org> wrote:
Hi,
On Fri, Jun 10, 2011 at 4:21 AM, Shugo Maeda <shugo@ruby-lang.org> wrote:
[#37071] [Ruby 1.9 - Feature #4877][Open] Unify Variable Expansion within Strings — Lazaridis Ilias <ilias@...>
[#37106] ruby core tutorials location — Roger Pack <rogerdpack2@...>
Hello all.
> Hello all.
> Rather than adding links to source code, I would prefer the wikibooks link and others under a new Tutorials section of http://www.ruby-lang.org/en/documentation/ as well as adding http://ruby.runpaint.org/ to the existing Getting Started section.
> > Rather than adding links to source code, I would prefer the wikibooks link and others under a new Tutorials section of http://www.ruby-lang.org/en/documentation/ as well as adding http://ruby.runpaint.org/ to the existing Getting Started section.
> I like what you're trying to do and see how great that tutorial connection from rdoc/yard could be, say, mixing with existing ruby-doc.org and rubydoc.info. ut I question embedding source links to info in which the info can easily grow outdated or abandoned as time passes. I also question the ongoing maintenance burdens.
> > I like what you're trying to do and see how great that tutorial connection from rdoc/yard could be, say, mixing with existing ruby-doc.org and rubydoc.info. ut I question embedding source links to info in which the info can easily grow outdated or abandoned as time passes. I also question the ongoing maintenance burdens.
> My feedback was specific to the suggestion of embedding links into the Ruby source tree, not the issue of whether more documentation is needed. For the tutorials scenario you raised, I believe links from http://www.ruby-lang.org/en/documentation/ (e.g. - a new Tutorials section) are a more adaptable and maintainable _implementation_ for dealing with documentation realities than links in source.
[#37139] [Bug: ruby-1.9] test-all on without openssl system — SASADA Koichi <ko1@...>
Hi,
[#37144] Ruby 1.8.6 status — Tanaka Akira <akr@...>
Hi.
[#37164] [Ruby 1.9 - Feature #4890][Open] Enumerable#lazy — Yutaka HARA <redmine@...>
[#37170] [Ruby 1.9 - Bug #4893][Open] Literal Instantiation breaks Object Model — Lazaridis Ilias <ilias@...>
[#37192] rb_w32_add_socket / rb_w32_remove_socket — ghazel@...
Hello,
[#37206] [Ruby 1.9 - Feature #4896][Open] Add newpad() support to Curses — Eric Hodel <drbrain@...7.net>
[#37207] [Ruby 1.9 - Feature #4897][Open] Define Math::TAU and BigMath.TAU. The "true" circle constant, Tau=2*Pi. See http://tauday.com/ — Simon Baird <simon.baird@...>
Issue #4897 has been updated by Nobuyoshi Nakada.
[#37217] coerce — Ondřej Bílka <neleai@...>
Hello
2011/6/18 Ondřej Bílka <neleai@seznam.cz>:
On Tue, Jun 21, 2011 at 04:06:05PM +0900, Robert Klemme wrote:
2011/6/21 Ondřej Bílka <neleai@seznam.cz>:
[#37265] Re: Welcome to our (ruby-core ML) You are added automatically — "Anthony Crognale" <anthony@...>
mget last:10 mp
[#37286] [Ruby 1.9 - Bug #4916][Open] [BUG] Segmentation fault - dyld: lazy symbol binding failed: Symbol not found: _ASN1_put_eoc — Hiroshi NAKAMURA <nakahiro@...>
[#37288] [Ruby 1.9 - Bug #4917][Open] NilClass#to_ary — Jay Feldblum <y_feldblum@...>
[#37289] [Ruby 1.9 - Feature #4918][Assigned] Make all core tests inherit from Test::Unit::TestCase — Martin Bosslet <Martin.Bosslet@...>
[#37336] I have imported Rake 0.9.2 to trunk — Eric Hodel <drbrain@...7.net>
I asked Jim if he would like me to import rake 0.9.2 to trunk, so I have.
[#37401] [Ruby 1.9 - Bug #3784] Seg fault in webrick — Yui NARUSE <redmine@...>
[#37463] [Ruby 1.9 - Bug #4480][Assigned] Thread-local variables issue: Thread#[] returns nil when called first time — Yui NARUSE <redmine@...>
[#37546] [Ruby 1.9 - Bug #4934][Open] winsock listen backlog may only be set once, and is set to 5 — Greg Hazel <ghazel@...>
[#37551] [ANN] Ruby Weekly Report — "Shota Fukumori (sora_h)" <sorah@...>
Hi,
[#37576] [Ruby 1.9 - Feature #4938][Open] Add Random.bytes [patch] — Marc-Andre Lafortune <ruby-core@...>
[#37588] CI? — Ryan Davis <ryand-ruby@...>
Is this an official CI for ruby?
(2011/06/28 6:28), Ryan Davis wrote:
[#37612] [Ruby 1.9 - Bug #4941][Open] cannot load such file -- rubygems.rb (LoadError) — Lazaridis Ilias <ilias@...>
[ruby-core:37205] Re: [Request for Comment] avoid timer thread
Eric Wong <normalperson@yhbt.net> wrote:
> I've even switched my Rainbows! instance (it calls fork+exec cgit.cgi)
> over to running Ruby trunk + your patch:
I found a race condition in my server that calls fork+exec
often:
unicorn-3.7.0/lib/unicorn/app/exec_cgi.rb:66: [BUG] rb_thread_wakeup_timer_thread - write: Broken pipe (EPIPE)
exec_cgi.rb code is here, the fork { exec } is all in Ruby:
http://bogomips.org/unicorn.git/tree/lib/unicorn/app/exec_cgi.rb?id=v3.7.0
I've only seen this happen once out of 8000 or so requests (mostly search
spiders). This process (Rainbows!) is also configured to use
multithreading, so there could be many things happening that could
fire a signal...
I'm testing the following fix on my server:
http://bogomips.org/ruby.git/commit/?h=sleepy-timer-thread&id=9154363119
I'm also sending SIGUSR1 every minute to increase the chance of hitting
this error and telling robots to crawl faster.
From 9154363119cd09a3b79aa45753d177ec65914f7c Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Fri, 17 Jun 2011 19:52:48 +0000
Subject: [PATCH] defer timer thread wakeups after fork()
There is a small race condition where a signal can be received
immediately after fork() but before the timer thread pipe can be
reinitialized, leading to EPIPE on write().
We probably can't disable interrupt before forking due to
system/exec() issues; and we don't want to lose wakeups to the
parent process, so we check the cached pid vs getpid() whenever
rb_thread_wakeup_timer_thread() is called.
---
thread_pthread.c | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/thread_pthread.c b/thread_pthread.c
index 1cc212b..3d99974 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -989,11 +989,18 @@ static void ping_signal_thread_list(void) { }
#endif /* USE_SIGNAL_THREAD_LIST */
static pthread_t timer_thread_id;
+static sig_atomic_t timer_thread_deferred;
+static pid_t timer_thread_pid;
static int timer_thread_pipe[2];
void
rb_thread_wakeup_timer_thread(void)
{
+ if (getpid() != timer_thread_pid) {
+ timer_thread_deferred = 1;
+ return;
+ }
+
/* already opened */
if (timer_thread_id && timer_thread_pipe[1]) {
const char *buff = "!";
@@ -1021,6 +1028,12 @@ thread_timer(void *p)
if (TT_DEBUG) fprintf(stderr, "start timer thread\n");
+ if (timer_thread_deferred) {
+ timer_thread_deferred = 0;
+ ping_signal_thread_list();
+ timer_thread_function(0);
+ }
+
while (system_working > 0) {
int err;
@@ -1093,6 +1106,7 @@ rb_thread_create_timer_thread(void)
fprintf(stderr, "[FATAL] Failed to create timer thread (errno: %d)\n", err);
exit(EXIT_FAILURE);
}
+ timer_thread_pid = getpid();
}
rb_disable_interrupt(); /* only timer thread recieve signal */
}
@@ -1118,6 +1132,7 @@ native_reset_timer_thread(void)
{
if (TT_DEBUG) fprintf(stderr, "reset timer thread\n");
timer_thread_id = 0;
+ timer_thread_pid = 0;
/* close */
if (timer_thread_pipe[0] && close(timer_thread_pipe[0]) < 0) { rb_bug_errno("native_stop_timer_thread - close(ttp[0])", errno); }
--
Eric Wong