[#79914] [Ruby trunk Bug#13282] opt_str_freeze does not always dedupe — normalperson@...
Issue #13282 has been reported by Eric Wong.
4 messages
2017/03/05
[#80140] [Ruby trunk Feature#13295] [PATCH] compile.c: apply opt_str_freeze to String#-@ (uminus) — shyouhei@...
Issue #13295 has been updated by shyouhei (Shyouhei Urabe).
5 messages
2017/03/13
[#80362] Re: [Ruby trunk Feature#13295] [PATCH] compile.c: apply opt_str_freeze to String#-@ (uminus)
— Eric Wong <normalperson@...>
2017/03/26
shyouhei@ruby-lang.org wrote:
[#80368] Re: [Ruby trunk Feature#13295] [PATCH] compile.c: apply opt_str_freeze to String#-@ (uminus)
— SASADA Koichi <ko1@...>
2017/03/27
On 2017/03/26 15:16, Eric Wong wrote:
[#80205] Re: [ruby-cvs:65166] duerst:r58000 (trunk): clarifiy 'codepoint' in documentation of String#each_codepoint — Eric Wong <normalperson@...>
duerst@ruby-lang.org wrote:
4 messages
2017/03/17
[#80213] Re: [ruby-cvs:65166] duerst:r58000 (trunk): clarifiy 'codepoint' in documentation of String#each_codepoint
— Martin J. Dürst <duerst@...>
2017/03/17
Hello Eric,
[#80290] [Ruby trunk Feature#13355] [PATCH] compile.c: optimize literal String range in case/when dispatch — normalperson@...
Issue #13355 has been reported by normalperson (Eric Wong).
4 messages
2017/03/23
[#80410] Re: [Ruby trunk Feature#13355] [PATCH] compile.c: optimize literal String range in case/when dispatch
— Eric Wong <normalperson@...>
2017/03/27
normalperson@yhbt.net wrote:
[#80415] [Ruby trunk Feature#12589] VM performance improvement proposal — vmakarov@...
Issue #12589 has been updated by vmakarov (Vladimir Makarov).
5 messages
2017/03/28
[#80488] [Ruby trunk Feature#12589] VM performance improvement proposal — vmakarov@...
Issue #12589 has been updated by vmakarov (Vladimir Makarov).
4 messages
2017/03/29
[ruby-core:80269] [Ruby trunk Bug#13349] Ruby unable to open files in /dev on AIX if compiled on AIX 7.1 or later
From:
cs@...
Date:
2017-03-21 15:24:08 UTC
List:
ruby-core #80269
Issue #13349 has been updated by 0x6373 (Christian Schwabl).
Description updated
Clarified that the supplied patch applies to ruby-2.0.0p468
----------------------------------------
Bug #13349: Ruby unable to open files in /dev on AIX if compiled on AIX 7.1 or later
https://bugs.ruby-lang.org/issues/13349#change-63706
* Author: 0x6373 (Christian Schwabl)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
In io.c there are 2 Linux specific flags (O_CLOEXEC and O_NOINHERIT) which are set regardless of the operating system it is compiled on.
Since AIX 7.1 /usr/include/fcntl.h defines O_CLOEXEC with the following statement:
~~~ c
#if _XOPEN_SOURCE >= 700
/* Currently as all 32 bits were used by _F flags, O_CLOEXEC and O_NOFOLLOW was defined as 64 bit.
* Open function takes int as parameter hence we can't use 64bit O_CLOEXEC and O_NOFOLLOW for open.
* instead of changing _FCLOEXEC and _FNOFOLLOW to 32 bit we have decided to use _FDEFERIND to define
* O_CLOEXEC and _FCLREAD to define O_NOFOLLOW as there is no corresponding O_ flag for _FDEFERIND and _FCLREAD.
*/
#define O_CLOEXEC _FDEFERIND /* sets FD_CLOEXEC on open */
#define O_NOFOLLOW _FCLREAD /* do not follow symlinks */
/* In AIX TTY kernel extension, The terminal parameters are automatically
* set to default values on first open. Hence O_TTY_INIT will be defined as zero.
*/
#define O_TTY_INIT 0 /* sets conforming tty state */
#endif /* _XOPEN_SOURCE >= 700 */
~~~
So, on AIX flag _FDEFERIND gets set, which causes all file open operations to /dev (i.e. /dev/null )to fail with EINVAL.
The following patch encloses the linux-only part with "#ifdev __linux__"
~~~ diff
--- a/io.c 2017-03-20 14:23:58.117976095 +0100
+++ b/io.c 2017-03-21 14:28:08.900827149 +0100
@@ -209,11 +209,13 @@ int
rb_cloexec_open(const char *pathname, int flags, mode_t mode)
{
int ret;
-#ifdef O_CLOEXEC
+#ifdef __linux__
+ #ifdef O_CLOEXEC
/* O_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
flags |= O_CLOEXEC;
-#elif defined O_NOINHERIT
+ #elif defined O_NOINHERIT
flags |= O_NOINHERIT;
+ #endif
#endif
ret = open(pathname, flags, mode);
if (ret == -1) return -1;
~~~
This patch applies against ruby-2.0.0p468 since i had a working reference of this compiled on AIX 5.3.
I tried this with ruby-2.0.0p468, ruby-2.2.6 and 2.3.x, but trunk is also affected since this part of the code hasn't changed in a while (end of 2011 from what i found).
Is there any style-guide for this part of the code?
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>