[#53072] [ruby-trunk - Feature #7994][Open] Make iterators pass an implicit named parameter `iteration` to the executed block — "alexeymuranov (Alexey Muranov)" <redmine@...>

10 messages 2013/03/01

[#53097] [ruby-trunk - Bug #8000][Open] "require 'tk'" segfaults on 64-bit linux with Tk 8.6 — "edmccard (Ed McCardell)" <edmccard@...>

25 messages 2013/03/02

[#53137] [ruby-trunk - Bug #8017][Open] Got segmentation fault on attempt to install ruby 2.0.0-p0 on Mac 10.6.8 via RVM — "adantel (Alex Filatau)" <filatau@...>

9 messages 2013/03/05

[#53168] [ruby-trunk - Bug #8034][Open] File.expand_path('something', '~') do not include home path — "rap-kasta (Pavel Manylov)" <rapkasta@...>

12 messages 2013/03/06

[#53199] [ruby-trunk - Bug #8040][Open] Unexpect behavior when using keyword arguments — "pabloh (Pablo Herrero)" <pablodherrero@...>

11 messages 2013/03/07

[#53203] [ruby-trunk - Feature #8042][Open] Add Addrinfo#socket to create a socket that is not connected or bound — "drbrain (Eric Hodel)" <drbrain@...7.net>

12 messages 2013/03/07

[#53248] Github commit log should not be used as references on redmine — Marc-Andre Lafortune <ruby-core-mailing-list@...>

Github commit log should not be used as references on redmine. E.g:

10 messages 2013/03/09

[#53386] [CommonRuby - Feature #8088][Open] Method#parameters (and friends) should provide useful information about core methods — "headius (Charles Nutter)" <headius@...>

14 messages 2013/03/13

[#53412] [CommonRuby - Feature #8096][Open] introduce Time.current_timestamp — "vipulnsward (Vipul Amler)" <vipulnsward@...>

34 messages 2013/03/14

[#53439] [ruby-trunk - Bug #8100][Open] Segfault in ruby-2.0.0p0 — "judofyr (Magnus Holm)" <judofyr@...>

22 messages 2013/03/15

[#53478] [ruby-trunk - Feature #8107][Open] [patch] runtime flag to track object allocation metadata — "tmm1 (Aman Gupta)" <ruby@...1.net>

20 messages 2013/03/16

[#53498] [ruby-trunk - Feature #8110][Open] Regex methods not changing global variables — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

21 messages 2013/03/18

[#53502] [ruby-trunk - Bug #8115][Open] make install DESTDIR=/my/install/path fails — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/03/18

[#53688] [ruby-trunk - Feature #8158][Open] lightweight structure for loaded features index — "funny_falcon (Yura Sokolov)" <funny.falcon@...>

27 messages 2013/03/24

[#53692] [ruby-trunk - Bug #8159][Open] Build failure introduced by Rinda changes — "luislavena (Luis Lavena)" <luislavena@...>

22 messages 2013/03/24

[#53733] [ruby-trunk - Bug #8165][Open] Problems with require — "Krugloff (Alexandr Kruglov)" <mr.krugloff@...>

12 messages 2013/03/26

[#53742] [ruby-trunk - Bug #8168][Open] Feature request: support for (single) statement lambda syntax/definition — "garysweaver (Gary Weaver)" <garysweaver@...>

9 messages 2013/03/26

[#53765] [ruby-trunk - Bug #8174][Open] AIX header file conflict with rb_hook_list_struct — "edelsohn (David Edelsohn)" <dje.gcc@...>

11 messages 2013/03/27

[#53808] [ruby-trunk - Feature #8181][Open] New flag for strftime that supports adding ordinal suffixes to numbers — "tkellen (Tyler Kellen)" <tyler@...>

10 messages 2013/03/28

[#53811] [ruby-trunk - Bug #8182][Open] XMLRPC request fails with "Wrong size. Was 31564, should be 1501" — "tsagadar (Marcel Mueller)" <marcel.mueller@...>

28 messages 2013/03/28

[#53849] [ruby-trunk - Feature #8191][Open] Short-hand syntax for duck-typing — "wardrop (Tom Wardrop)" <tom@...>

48 messages 2013/03/31

[#53850] An evaluation of 2.0.0 release — Yusuke Endoh <mame@...>

Let's look back at 2.0.0 release so that we can do better next time.

12 messages 2013/03/31

[ruby-core:53782] [ruby-trunk - Bug #8174] AIX header file conflict with rb_hook_list_struct

From: "edelsohn (David Edelsohn)" <dje.gcc@...>
Date: 2013-03-27 22:23:44 UTC
List: ruby-core #53782
Issue #8174 has been updated by edelsohn (David Edelsohn).


I do not know why the documentation page that you referenced does not mention "events".  The same header also exists in AIX 6.1, and probably earlier.  It may have been removed in some update, but that does not address existing systems.

Ruby thread.c uses revents:

    if (fds.revents & POLLIN_SET)
        result |= RB_WAITFD_IN;
    if (fds.revents & POLLOUT_SET)
        result |= RB_WAITFD_OUT;
    if (fds.revents & POLLEX_SET)
        result |= RB_WAITFD_PRI;

so your patch causes the statements to refer to the wrong members.  It seems safer to #undef the offending macro instead of defining more macros.  Wrapping it in #ifdef _AIX is fine.

diff --git i/include/ruby/io.h w/include/ruby/io.h
index 07be55c..12ffc76 100644
--- i/include/ruby/io.h
+++ w/include/ruby/io.h
@@ -29,6 +29,9 @@ extern "C" {

 #include "ruby/config.h"
 #if defined(HAVE_POLL)
+#  ifdef _AIX
+#    undef events
+#  endif
 #  include <poll.h>
 #  define RB_WAITFD_IN  POLLIN
 #  define RB_WAITFD_PRI POLLPRI

----------------------------------------
Bug #8174: AIX header file conflict with rb_hook_list_struct
https://bugs.ruby-lang.org/issues/8174#change-37975

Author: edelsohn (David Edelsohn)
Status: Feedback
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby-2.0.0-p0


=begin
rb_hook_list_struct defines a member "events":

  typedef struct rb_hook_list_struct {
      struct rb_event_hook_struct *hooks;
      rb_event_flag_t events;
      int need_clean;
  } rb_hook_list_t;

AIX defines a macro "events" in sys/poll.h:

  struct  pollfd
  {
          long    fd;                     /* file descriptor or file ptr  */
          ushort  reqevents;              /* requested events             */
          ushort  rtnevents;              /* returned events              */
  };
  #define events  reqevents               /* SVR3,4 pollfd member name    */
  #define revents rtnevents               /* SVR3,4 pollfd member name    */

Ruby thread.c includes sys/poll.c via ruby/io.h.  This renames the structure member when referenced through EXEC_EVENT_HOOK, e.g.,

        if ((state = EXEC_TAG()) == 0) {
            SAVE_ROOT_JMPBUF(th, {
                if (!th->first_func) {
                    GetProcPtr(th->first_proc, proc);
                    th->errinfo = Qnil;
                    th->root_lep = rb_vm_ep_local_ep(proc->block.ep);
                    th->root_svar = Qnil;
                    EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_BEGIN, th->self, 0, 0, Qundef);
                    th->value = rb_vm_invoke_proc(th, proc, (int)RARRAY_LEN(args), RARRAY_PTR(args), 0);
                    EXEC_EVENT_HOOK(th, RUBY_EVENT_THREAD_END, th->self, 0, 0, Qundef);
                }

This makes the compiler unhappy:

  compiling /usr/gnu/src/ruby-2.0.0-p0/thread.c
  /usr/gnu/src/ruby-2.0.0-p0/thread.c: In function 'thread_start_func_2':
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:496:6: error: 'rb_hook_list_t' has no member named 'reqevents'
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:496:6: error: 'rb_hook_list_t' has no member named 'reqevents'
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:496:6: error: 'rb_hook_list_t' has no member named 'reqevents'
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:496:6: error: 'rb_hook_list_t' has no member named 'reqevents'
  /usr/gnu/src/ruby-2.0.0-p0/thread.c: In function 'rb_threadptr_execute_interrupts':
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:1917:6: error: 'rb_hook_list_t' has no member named 'reqevents'
  /usr/gnu/src/ruby-2.0.0-p0/thread.c:1917:6: error: 'rb_hook_list_t' has no member named 'reqevents'

Because Ruby only uses fd member revents, one option is to change include/ruby/io.h

  # diff
   #include "ruby/config.h"
   #if defined(HAVE_POLL)
   #  include <poll.h>
  +#  undef events
   #  define RB_WAITFD_IN  POLLIN
   #  define RB_WAITFD_PRI POLLPRI
   #  define RB_WAITFD_OUT POLLOUT
=end



-- 
http://bugs.ruby-lang.org/

In This Thread