[#97319] [Ruby master Feature#16667] Allow parameters to Symbol#to_proc and Method#to_proc — jgomo3@...

Issue #16667 has been reported by jgomo3 (Jes俍 Gez).

10 messages 2020/03/01

[#97344] [Ruby master Feature#16670] Reverse order of `expression` in `pattern` for 1-line pattern matching while it's still experimental — ttilberg@...

Issue #16670 has been reported by ttilberg (Tim Tilberg).

9 messages 2020/03/03

[#97355] [Ruby master Misc#16671] BASERUBY version policy — ko1@...

Issue #16671 has been reported by ko1 (Koichi Sasada).

10 messages 2020/03/04

[#97359] [Ruby master Bug#16672] net/http leaves original content-length header intact after inflating response — justin.reid@...

Issue #16672 has been reported by jmreid (Justin Reid).

15 messages 2020/03/04

[#97390] [Ruby master Bug#16677] Negative integer powered (**) to a float number results in a complex — camille.drapier@...

Issue #16677 has been reported by CamilleDrapier (Camille Drapier).

25 messages 2020/03/07

[#97410] [Ruby master Bug#16680] [Breaking Change] Ruby 2.7 not support symlinks folder in $LOAD_PATH to work with autoload. — vil963@...

Issue #16680 has been reported by zw963 (Wei Zheng).

8 messages 2020/03/07

[#97416] [Ruby master Bug#16682] Ruby 2.7.0p0 crash on exit if there is an active RUBY_INTERNAL_EVENT_GC_EXIT tracepoint — jean.boussier@...

Issue #16682 has been reported by byroot (Jean Boussier).

16 messages 2020/03/09

[#97448] [Ruby master Feature#16688] Allow #to_path object as argument to system() — daniel@...42.com

Issue #16688 has been reported by Dan0042 (Daniel DeLorme).

12 messages 2020/03/11

[#97528] [Ruby master Misc#16693] DevelopersMeeting20200410Japan — mame@...

Issue #16693 has been reported by mame (Yusuke Endoh).

12 messages 2020/03/16

[#97536] [Ruby master Bug#16694] JIT vs hardened GCC with PCH — v.ondruch@...

Issue #16694 has been reported by vo.x (Vit Ondruch).

11 messages 2020/03/18

[#97538] [Ruby master Bug#16695] Stack consistency error when using the return value — s.wakeup31@...

Issue #16695 has been reported by s4ichi (takamasa saichi).

10 messages 2020/03/18

[#97554] [Ruby master Bug#16697] Hash.ruby2_keywords_hash?(value) should support any object — eregontp@...

Issue #16697 has been reported by Eregon (Benoit Daloze).

12 messages 2020/03/19

[#97609] [Ruby master Bug#16740] Deprecating and removing the broken Process.clock_getres — eregontp@...

Issue #16740 has been reported by Eregon (Benoit Daloze).

14 messages 2020/03/28

[#97621] [Ruby master Bug#16743] problem with multi threading [BUG] Segmentation fault — pauloo.jansen@...

Issue #16743 has been reported by paulorja (paulo jansen).

12 messages 2020/03/29

[#97629] [Ruby master Feature#16744] Flag to load current bundle without using bundle exec — headius@...

Issue #16744 has been reported by headius (Charles Nutter).

11 messages 2020/03/30

[ruby-core:97559] Re: [Ruby master Bug#16694] JIT vs hardened GCC with PCH

From: Vladimir Makarov <vmakarov@...>
Date: 2020-03-19 22:55:42 UTC
List: ruby-core #97559
On 2020-03-18 4:30 a.m., v.ondruch@tiscali.cz wrote:
> As it turns out, this is because GCC in RHEL is fully hardened. Unfortunately, due to GCC design, when GCC is fully hardened, it cannot properly handle PCH due to memory address relocation. Moreover, PCH are also security risk, so it seems they are going to be disabled entirely on RHEL.

I thought about the risk for quite some time.In brief, I don't think 
there is a security problem.

Any program creating and reading a file which somehow affects program 
behaviour has the same security risk. For an attacker it would be easier 
to corrupt some ruby source (or byte) code file loaded during CRuby work 
because

 * PCH is created for a short period of time only during one CRuby 
process work vs a Ruby source (or byte code) file which can be created 
for much longer period of time and by another process

 * PCH has hard to understand format vs well defined Ruby source (or 
byte) code file

 * PCH has a simple mechanism to check its integrity and it works in 
case when Linux uses page randominazation for GCC processes

We could add signing PCH by some cryptographic hash and check the hash 
every time we use PCH.But as I wrote before it would be probably an 
overkill when there are weaker places to attack.

Unfortunately PCH for PIE GCC can not work with page randominazation.
And this is the current RHEL environment. Besides CRuby, there are other 
projects where PCH is used (mostly by big C/C++ program developers).I 
don't see that somebody in GCC community will re-implement PCH in the 
same way as it is done in Clang.Although there is a possibility that 
coming C++ modules can be used for C too.

There are several ways to solve this problem besides switching JIT off:

* use only clang for such environments

* use simple (non-PCH) header although it can probably slowdown JIT 
compilation speed significantly.The slowdown can be facilitated by

 * header minimization (I used it originally but it does not improve 
JIT speed compilation when PCH is used)

 * may be some threshold tuning (when to start JIT for a method) to 
avoid more important methods waiting more in JIT pipeline queue

* use one more approach based on non-fat LTO object file generated from 
the header as LTO works for GCC (and Clang) when page randomization 
(ASLR) is used.LTO object is processed even more that PCH.So it 
might increase JIT compilation speed even more than PCH usage.Although 
this approach needs some investigation (how well inlining will work in LTO).

Unfortunately, besides the advices I can not help solving this problem 
in the near future as I am currently busy with GCC and the light-weight 
JIT compiler project.

> Now I wonder what is the impact on Ruby JIT. I worry that with disabled PCH, the Ruby performance with JIT will be even worser without JIT. May be it is not good idea to use GCC for JIT. What are your thoughts?
>
> The original ticket with all the details is here [1].
>
> [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1721553
>
>
>


Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread