[#21709] [Feature #1084] request for: Array#sort_by! — Radosław Bułat <redmine@...>

Feature #1084: request for: Array#sort_by!

15 messages 2009/02/01

[#21714] [BUG:trunk] Got the error message, after run 'gem install --test'. — Takao Kouji <kouji@...7.net>

Hi, Ryan.

14 messages 2009/02/01

[#21715] New documentation system! — Luiz Vitor Martinez Cardoso <grabber@...>

People,

35 messages 2009/02/01
[#21716] Re: New documentation system! — Austin Ziegler <halostatue@...> 2009/02/01

On Sun, Feb 1, 2009 at 10:51 AM, Luiz Vitor Martinez Cardoso

[#21717] Re: New documentation system! — znmeb@... 2009/02/01

Quoting Austin Ziegler <halostatue@gmail.com>:

[#21718] Re: New documentation system! — Luiz Vitor Martinez Cardoso <grabber@...> 2009/02/01

People,

[#21719] Re: New documentation system! — Yehuda Katz <wycats@...> 2009/02/01

One project that has been in the works for a while and shows a lot of

[#21731] Re: New documentation system! — Charles Oliver Nutter <charles.nutter@...> 2009/02/02

I'd love to see a documentation system similar to what python has, and

[#21746] Re: New documentation system! — Luiz Vitor Martinez Cardoso <grabber@...> 2009/02/02

People,

[#21754] Re: New documentation system! — Charles Oliver Nutter <charles.nutter@...> 2009/02/02

Luiz Vitor Martinez Cardoso wrote:

[#21802] [Bug #1098] Unclear encoding error: #<Encoding::UndefinedConversionError: "\xE2\x96\x80" from UTF-8 to ISO-8859-1 in conversion from CP850 to ISO-8859-1> — Tom Link <redmine@...>

Bug #1098: Unclear encoding error: #<Encoding::UndefinedConversionError: "\xE2\x96\x80" from UTF-8 to ISO-8859-1 in conversion from CP850 to ISO-8859-1>

6 messages 2009/02/03

[#21893] [Feature #1122] request for: Object#try — Narihiro Nakamura <redmine@...>

Feature #1122: request for: Object#try

30 messages 2009/02/06
[#21907] Re: [Feature #1122] request for: Object#try — Yusuke ENDOH <mame@...> 2009/02/07

Hi,

[#21909] Re: [Feature #1122] request for: Object#try — "David A. Black" <dblack@...> 2009/02/07

Hi --

[#21923] Re: [Feature #1122] request for: Object#try — Yusuke ENDOH <mame@...> 2009/02/08

Hi,

[#21932] Re: [Feature #1122] request for: Object#try — "David A. Black" <dblack@...> 2009/02/08

Hi--

[#21968] Re: [Feature #1122] request for: Object#try — Michal Babej <calcifer@...> 2009/02/10

Hi,

[#21972] Re: [Feature #1122] request for: Object#try — "David A. Black" <dblack@...> 2009/02/10

Hi --

[#21973] Re: [Feature #1122] request for: Object#try — =?ISO-8859-2?Q?Rados=B3aw_Bu=B3at?= <radek.bulat@...> 2009/02/11

Providing new syntax change for such a small thing is IMHO

[#22165] Re: [Feature #1122] request for: Object#try — Yehuda Katz <wycats@...> 2009/02/15

Count me in as a +1 on foo.?bar(baz). I'm on the fence about whether ?bar

[#22177] Re: [Feature #1122] request for: Object#try — Daniel Luz <dev@...> 2009/02/16

2009/2/15 Yehuda Katz <wycats@gmail.com>:

[#22219] Re: [Feature #1122] request for: Object#try — Roger Pack <rogerdpack@...> 2009/02/18

> IMHO, foo.?bar should behave as "call-except-if-nil". Not only it

[#22226] Re: [Feature #1122] request for: Object#try — =?ISO-8859-2?Q?Rados=B3aw_Bu=B3at?= <radek.bulat@...> 2009/02/18

On Wed, Feb 18, 2009 at 6:29 PM, Roger Pack <rogerdpack@gmail.com> wrote:

[#22230] Re: [Feature #1122] request for: Object#try — Roger Pack <rogerdpack@...> 2009/02/18

> Then how it is different from

[#21903] [Bug #1127] error while compiling Win32API under MinGW — Luis Lavena <redmine@...>

Bug #1127: error while compiling Win32API under MinGW

15 messages 2009/02/07

[#21937] [Bug #1131] String#unpack("V") does not work correctly is linux on s390x — Ittay Dror <redmine@...>

Bug #1131: String#unpack("V") does not work correctly is linux on s390x

13 messages 2009/02/08

[#21946] New hash : syntax for the 1.8 series? — Brent Roman <brent@...>

36 messages 2009/02/10
[#21949] Re: New hash : syntax for the 1.8 series? — "Akinori MUSHA" <knu@...> 2009/02/10

At Tue, 10 Feb 2009 16:30:55 +0900,

[#21952] Re: New hash : syntax for the 1.8 series? — "David A. Black" <dblack@...> 2009/02/10

Hi --

[#21963] Re: New hash : syntax for the 1.8 series? — "Akinori MUSHA" <knu@...> 2009/02/10

At Tue, 10 Feb 2009 22:32:19 +0900,

[#21977] Re: New hash : syntax for the 1.8 series? — Evan Phoenix <evan@...> 2009/02/11

[#21980] Re: New hash : syntax for the 1.8 series? — Yukihiro Matsumoto <matz@...> 2009/02/11

Hi,

[#21997] 1.8.7 Specifics — John Barnette <jbarnette@...>

There's a fair amount of talk lately about release management and

80 messages 2009/02/11
[#21999] Re: 1.8.7 Specifics — Luis Lavena <luislavena@...> 2009/02/11

On Wed, Feb 11, 2009 at 4:42 PM, John Barnette <jbarnette@gmail.com> wrote:

[#22004] Re: 1.8.7 Specifics — Charles Oliver Nutter <charles.nutter@...> 2009/02/11

Luis Lavena wrote:

[#22005] Re: 1.8.7 Specifics — Luis Lavena <luislavena@...> 2009/02/11

On Wed, Feb 11, 2009 at 5:55 PM, Charles Oliver Nutter

[#22007] Re: 1.8.7 Specifics — Pit Capitain <pit.capitain@...> 2009/02/11

2009/2/11 Luis Lavena <luislavena@gmail.com>:

[#22008] Re: 1.8.7 Specifics — Yukihiro Matsumoto <matz@...> 2009/02/11

Hi,

[#22024] Re: 1.8.7 Specifics — Brent Roman <brent@...> 2009/02/12

[#22025] Re: 1.8.7 Specifics — Yukihiro Matsumoto <matz@...> 2009/02/12

Hi,

[#22028] Re: 1.8.7 Specifics — Ezra Zygmuntowicz <ezmobius@...> 2009/02/12

[#22048] Re: 1.8.7 Specifics — Urabe Shyouhei <shyouhei@...> 2009/02/13

Hello Ezra,

[#22049] Re: 1.8.7 Specifics — Ezra Zygmuntowicz <ezmobius@...> 2009/02/13

[#22051] A short memorandum (Re: 1.8.7 Specifics) — Urabe Shyouhei <shyouhei@...> 2009/02/13

Let me leave a memo to remember issues I can think of.

[#22054] Re: A short memorandum (Re: 1.8.7 Specifics) — Charles Oliver Nutter <charles.nutter@...> 2009/02/13

Urabe Shyouhei wrote:

[#22055] Re: A short memorandum (Re: 1.8.7 Specifics) — Charles Oliver Nutter <charles.nutter@...> 2009/02/13

Charles Oliver Nutter wrote:

[#22079] Re: A short memorandum (Re: 1.8.7 Specifics) — Eero Saynatkari <ruby-ml@...> 2009/02/14

Excerpts from Headius: Charles Oliver Nutter's message of Sat Feb 14 00:53:17 +0200 2009:

[#22091] Re: A short memorandum (Re: 1.8.7 Specifics) — Charles Oliver Nutter <charles.nutter@...> 2009/02/14

Eero Saynatkari wrote:

[#22101] Re: A short memorandum (Re: 1.8.7 Specifics) — Urabe Shyouhei <shyouhei@...> 2009/02/14

Charles Oliver Nutter wrote:

[#22107] Re: A short memorandum (Re: 1.8.7 Specifics) — Ezra Zygmuntowicz <ezmobius@...> 2009/02/14

[#22123] Re: A short memorandum (Re: 1.8.7 Specifics) — Urabe Shyouhei <shyouhei@...> 2009/02/14

Ezra Zygmuntowicz wrote:

[#22128] Re: A short memorandum (Re: 1.8.7 Specifics) — Nobuyoshi Nakada <nobu@...> 2009/02/15

Hi,

[#22132] Re: A short memorandum (Re: 1.8.7 Specifics) — Brent Roman <brent@...> 2009/02/15

[#22139] Re: A short memorandum (Re: 1.8.7 Specifics) — Charles Oliver Nutter <charles.nutter@...> 2009/02/15

Brent Roman wrote:

[#22145] Re: A short memorandum (Re: 1.8.7 Specifics) — Brent Roman <brent@...> 2009/02/15

[#22152] Re: A short memorandum (Re: 1.8.7 Specifics) — Charles Oliver Nutter <charles.nutter@...> 2009/02/15

Brent Roman wrote:

[#22065] Dir.glob and duplicates? — Charles Oliver Nutter <charles.nutter@...>

I was fixing a JRuby Dir.glob spec failure where we produced a duplicate

28 messages 2009/02/14
[#22066] Re: Dir.glob and duplicates? — Tanaka Akira <akr@...> 2009/02/14

In article <4996749D.7050009@sun.com>,

[#22116] [Bug #1162] Build Assertion Failure with VC+++ - Incorrect flushing of stdout/stderr — Charlie Savage <redmine@...>

Bug #1162: Build Assertion Failure with VC+++ - Incorrect flushing of stdout/stderr

11 messages 2009/02/14

[#22206] ruby-1.9.1-p0 build failure on i586 — "Jeroen van Meeuwen (Fedora Project)" <kanarip@...>

Hi there,

12 messages 2009/02/18

[#22212] [Bug #1172] [sparc] *** glibc detected *** ruby1.9: free(): invalid pointer: 0xf7ef6a54 *** — Lucas Nussbaum <redmine@...>

Bug #1172: [sparc] *** glibc detected *** ruby1.9: free(): invalid pointer: 0xf7ef6a54 ***

12 messages 2009/02/18

[#22246] YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...>

The idea is to make selectors like optional versions of Python imports.

137 messages 2009/02/19
[#22251] Re: YASNP (Yet Another Selector Namespace Proposal) — Charles Oliver Nutter <charles.nutter@...> 2009/02/19

Yehuda Katz wrote:

[#22252] Re: YASNP (Yet Another Selector Namespace Proposal) — Charles Oliver Nutter <charles.nutter@...> 2009/02/19

Charles Oliver Nutter wrote:

[#22262] Re: YASNP (Yet Another Selector Namespace Proposal) — Florian Gilcher <flo@...> 2009/02/19

[#22267] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/19

2009/2/19 Florian Gilcher <flo@andersground.net>

[#22285] Re: YASNP (Yet Another Selector Namespace Proposal) — Florian Gilcher <flo@...> 2009/02/20

[#22295] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/20

Ok, based on a bunch of comments I got from Aaron Patterson and John

[#22316] Re: YASNP (Yet Another Selector Namespace Proposal) — Jim Weirich <jim.weirich@...> 2009/02/21

On Feb 20, 2009, at 8:39 AM, Yehuda Katz wrote:

[#22322] Re: YASNP (Yet Another Selector Namespace Proposal) — Aaron Patterson <aaron@...> 2009/02/22

On Sun, Feb 22, 2009 at 04:34:18AM +0900, Jim Weirich wrote:

[#22330] Re: YASNP (Yet Another Selector Namespace Proposal) — Eero Saynatkari <ruby-ml@...> 2009/02/22

Excerpts from Aaron Patterson's message of Sun Feb 22 04:35:41 +0200 2009:

[#22409] Re: YASNP (Yet Another Selector Namespace Proposal) — Yukihiro Matsumoto <matz@...> 2009/02/24

Hi,

[#22427] Re: YASNP (Yet Another Selector Namespace Proposal) — Brian Ford <brixen@...> 2009/02/24

On Feb 24, 2:07=A0am, Yukihiro Matsumoto <m...@ruby-lang.org> wrote:

[#22433] Re: YASNP (Yet Another Selector Namespace Proposal) — Eero Saynatkari <ruby-ml@...> 2009/02/24

Excerpts from brixen's message of Wed Feb 25 00:04:34 +0200 2009:

[#22435] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/24

2009/2/24 Eero Saynatkari <ruby-ml@kittensoft.org>

[#22441] Re: YASNP (Yet Another Selector Namespace Proposal) — Brian Ford <brixen@...> 2009/02/25

On Feb 24, 3:17=A0pm, Yehuda Katz <wyc...@gmail.com> wrote:

[#22442] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/25

2009/2/24 Brian Ford <brixen@gmail.com>

[#22446] Re: YASNP (Yet Another Selector Namespace Proposal) — Jim Deville <jdeville@...> 2009/02/25

I agree that this will be used in ways other than just framework creators. =

[#22448] Re: YASNP (Yet Another Selector Namespace Proposal) — Jim Weirich <jim.weirich@...> 2009/02/25

[#22449] Re: YASNP (Yet Another Selector Namespace Proposal) — Jim Deville <jdeville@...> 2009/02/25

[#22450] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/25

I'm also in favor of discussing this, but all I hear so far in opposition is

[#22460] Re: YASNP (Yet Another Selector Namespace Proposal) — Florian Gilcher <flo@...> 2009/02/25

[#22471] Re: YASNP (Yet Another Selector Namespace Proposal) — Brian Ford <brixen@...> 2009/02/25

On Feb 24, 9:17=A0pm, Yehuda Katz <wyc...@gmail.com> wrote:

[#22490] Re: YASNP (Yet Another Selector Namespace Proposal) — Ola Bini <ola.bini@...> 2009/02/25

Yehuda Katz wrote:

[#22495] Re: YASNP (Yet Another Selector Namespace Proposal) — Yukihiro Matsumoto <matz@...> 2009/02/25

Hi,

[#22506] Re: YASNP (Yet Another Selector Namespace Proposal) — Ola Bini <ola.bini@...> 2009/02/25

Yukihiro Matsumoto wrote:

[#22510] Re: YASNP (Yet Another Selector Namespace Proposal) — Charles Oliver Nutter <charles.nutter@...> 2009/02/25

Ola Bini wrote:

[#22514] Re: YASNP (Yet Another Selector Namespace Proposal) — Ola Bini <ola.bini@...> 2009/02/25

Charles Oliver Nutter wrote:

[#22521] Re: YASNP (Yet Another Selector Namespace Proposal) — Charles Oliver Nutter <charles.nutter@...> 2009/02/25

Ola Bini wrote:

[#22522] Re: YASNP (Yet Another Selector Namespace Proposal) — Gary Wright <gwtmp01@...> 2009/02/25

[#22523] Re: YASNP (Yet Another Selector Namespace Proposal) — Yehuda Katz <wycats@...> 2009/02/25

2009/2/25 Gary Wright <gwtmp01@mac.com>

[#22501] Re: YASNP (Yet Another Selector Namespace Proposal) — Jim Weirich <jim.weirich@...> 2009/02/25

[#22325] suggestions for float — Roger Pack <rogerdpack@...>

Floating point rounding errors are common and "annoying"

20 messages 2009/02/22
[#22595] Re: suggestions for float — Roger Pack <rogerdpack@...> 2009/02/28

On Sat, Feb 21, 2009 at 11:59 PM, Roger Pack <rogerdpack@gmail.com> wrote:

[#22621] Re: suggestions for float — Yukihiro Matsumoto <matz@...> 2009/03/02

Hi,

[#22624] Re: suggestions for float — Eero Saynatkari <ruby-ml@...> 2009/03/02

Excerpts from Yukihiro Matsumoto's message of Mon Mar 02 12:46:27 +0200 2009:

[#22629] Re: suggestions for float — Kurt Stephens <kurt@...> 2009/03/02
[#22631] Re: suggestions for float — Eero Saynatkari <ruby-ml@...> 2009/03/02

Excerpts from Kurt Stephens's message of Mon Mar 02 20:27:09 +0200 2009:

[#22336] Floats are freezeable and taintable? — Charles Oliver Nutter <charles.nutter@...>

In adding an optimization for Float I realized that Float objects are

13 messages 2009/02/22

[#22353] [Bug #1195] String#% does not include prefix before zero value for # versions of numeric formats — Charles Nutter <redmine@...>

Bug #1195: String#% does not include prefix before zero value for # versions of numeric formats

10 messages 2009/02/23
[#22397] Re: [Bug #1195] String#% does not include prefix before zero value for # versions of numeric formats — Tanaka Akira <akr@...> 2009/02/24

In article <49a25ec0ce233_84c7e8c1f8909a@redmine.ruby-lang.org>,

[#22543] [Feature #1218] New method needed to set and get the current recursion limit — Conrad Taylor <redmine@...>

Feature #1218: New method needed to set and get the current recursion limit

12 messages 2009/02/26

[#22584] MBARI8 patch fixes bugs caused by incorrect volatile variable declarations — Brent Roman <brent@...>

16 messages 2009/02/28
[#22587] Re: MBARI8 patch fixes bugs caused by incorrect volatile variable declarations — Nobuyoshi Nakada <nobu@...> 2009/02/28

Hi,

[#22590] Re: MBARI8 patch fixes bugs caused by incorrect volatile variable declarations — Tanaka Akira <akr@...> 2009/02/28

In article <49a9024b.0e0d6e0a.11f5.ffffee2f@mx.google.com>,

[#22599] Re: MBARI8 patch fixes bugs caused by incorrect volatile variable declarations — Brent Roman <brent@...> 2009/02/28

[#22667] Re: MBARI8 patch fixes bugs caused by incorrect volatile variable declarations — Michael King <kingmt@...> 2009/03/04

I am having an issue with the MBARI patches. In our app the test suite has a

[ruby-core:22584] MBARI8 patch fixes bugs caused by incorrect volatile variable declarations

From: Brent Roman <brent@...>
Date: 2009-02-28 06:47:18 UTC
List: ruby-core #22584
Much of this is excerpted from updates at:

http://sites.google.com/site/brentsrubypatches/

I believe I discovered two latent MRI bugs that had been unearthed by my
factoring of rb_eval() into separate eval functions for each node type (in
MBARI 4).  This was all done in the course of determining why the MBARI7
patch set, while very solid on x86-32, was segfaulting on x86-64 CPUs. 

First:
The function evaluating a string literal node would, in some cases, pass the
internal pointer of a newly created ruby string object into rb_reg_new(),
which would derive a new regular expression object from it.  Trouble was,
gcc, when optimizing on a machine like the x86-64, would determine that the
pointer to the newly created string object need not be stacked and in fact
could be entirely "forgotten" as soon its text buffer was passed into
rb_reg_new().  Nothing wrong with that... unless a GC pass happened to be
triggered while deriving the new regular expression from that string
object's internal text buffer.  In which case, that now unreferenced String
object would never be marked and, as a result, that String and its text
buffer would be prematurely freed, trashing the regular expression pattern,
resulting in very occasional regex match failures and (very rare) heap
corruption.

The best test case I came up with for this first bug was:

   $ ruby -e "GC.stress=true; load 'test/pathtest/test_pathtest.rb'"

Lots of test failures with MBARI 7 (only on x86-64),  all passed with MBARI
8

The RB_GC_GUARD() macro introduced in 1.8.7 works nicely to prevent this
sort of problem:
+       RB_GC_GUARD(str);  /* prevent tail call optimization here */
       return str2;
     case NODE_DREGX_ONCE:	/* regexp expand once */
       str2 = rb_reg_new(RSTRING(str)->ptr, RSTRING(str)->len,
 			  node->nd_cflag);
       nd_set_type(node, NODE_LIT);
+      RB_GC_GUARD(str);  /* ensure str is not GC'd in rb_reg_new */
       return node->nd_lit = str2;


Second:
eval.c is full of setjmp()s and longjmp() calls.  These are error prone
constructs for a number reasons.  The most insidious of which is the fact
that the 'C' spec does not require that non-volatile local variables in the
function containing a setjmp() be preserved when it returns via longjmp(). 
A few of the unpatched functions containing EXEC_TAG() in eval.c missed this
point, failing to declare as 'volatile' variables that might need to be
preserved on the stack in exceptional cases (redo clauses in some contexts,
for example).  And, many variables were declared volatile that did not need
to be, adding to the confusion.  This coding rule is difficult to maintain
during incremental development, even if one follows it properly in the first
place.  I added a few such errors of my own with MBARI4, because I did not
fully understand the volatile qualifier in this context and tried to follow
the "patterns" I saw in the existing code.    The volatile qualifier here is
to prevent variables from being cached in registers.  So, of course, CPUs
with large register files would be most susceptible to this class of bug.


Two independent testers had more elaborate test cases that failed very
occasionally on x86-64 with the MBARI 7 patches on x86-64.  They both report
that their tests now work with MBARI 8A.

Here is one of the simpler examples of volatile qualifiers being misplaced
in the unpatched eval.c:
(See if you don't agree)

/* function to call func under the specified class/module context */
static VALUE
exec_under(func, under, cbase, args)
    VALUE (*func)();
-    VALUE under, cbase;
+    VALUE under;
+    volatile VALUE cbase;
    void *args;
{
-    VALUE val = Qnil;		/* OK */
+    VALUE val;
    int state;
-    int mode;
+    volatile int mode;
    struct FRAME *f = ruby_frame;

    PUSH_CLASS(under);
    PUSH_FRAME();
    ruby_frame->self = f->self;
    ruby_frame->last_func = f->last_func;
    ruby_frame->orig_func = f->orig_func;
    ruby_frame->last_class = f->last_class;
    ruby_frame->argc = f->argc;
    if (cbase) {
	PUSH_CREF(cbase);
    }

    mode = scope_vmode;
    SCOPE_SET(SCOPE_PUBLIC);
    PUSH_TAG(PROT_NONE);
    if ((state = EXEC_TAG()) == 0) {
	val = (*func)(args);
    }
    POP_TAG();
    if (cbase) POP_CREF();
    SCOPE_SET(mode);
    POP_FRAME();
    POP_CLASS();
    if (state) JUMP_TAG(state);

    return val;
}


Unfortunately, there is a lot of this sort of thing in eval.c.
MBARI8 is a big patch as a result.

I'm guessing that we are not seeing failures in the field because the x86-32
has very few registers, so, in practice, variables are usually on the stack
and thus preserved through longjmps even when they are not explicitly
declared volatile.

I'd actually be quite relieved if I were proven wrong about this :-)
Otherwise, these fixes will be in the patches I submit upstream.

The only bright side is that, by removing the volatile qualifier from
variables where
it was unnecessary, MBARI8 on x86-64 seems to have realized a few percent
speed improvement running
the ruby test suite over both unpatched Ruby and the Ruby with the MBARI7
patch.


- brent


-- 
View this message in context: http://www.nabble.com/MBARI8-patch-fixes-bugs-caused-by-incorrect-volatile-variable-declarations-tp22259357p22259357.html
Sent from the ruby-core mailing list archive at Nabble.com.


In This Thread

Prev Next