# 1.8.7-p72 on AIX 5.3 with IBM compiler

**URL:** <https://www.ruby-forum.com/t/1-8-7-p72-on-aix-5-3-with-ibm-compiler/151090>\
**Category:** Ruby\
**Created:** [October 16, 2008, 6:05pm UTC](https://www.ruby-forum.com/t/1-8-7-p72-on-aix-5-3-with-ibm-compiler/151090 "2008-10-16T18:05:05Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Albert\_Chin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/45deac/32.png) [@Albert\_Chin](https://www.ruby-forum.com/u/Albert_Chin)\
**Post date:** [October 16, 2008, 6:05pm UTC](https://www.ruby-forum.com/t/1-8-7-p72-on-aix-5-3-with-ibm-compiler/151090/1 "2008-10-16T18:05:05Z")

</div>

$ gtar zxf ruby-1.8.7-p72.tar.gz  
$ cd ruby-1.8.7-p72  
$ ./configure CC=xlc\_r CFLAGS="-g" --enable-shared --enable-pthread  
$ gmake  
…  
xlc\_r -g -DRUBY\_EXPORT -I. -I. -c eval.c  
“eval.c”, line 12093.12: 1506-343 (S) Redeclaration of thread\_init  
differs from previous declaration on line 920 of  
“/usr/include/sys/thread.h”.  
“eval.c”, line 12093.12: 1506-382 (I) The type “int” of identifier  
thread\_init differs from previous type “void(unsigned long long,unsigned  
long long)”.  
gmake: \*\*\* [eval.o] Error 1  
[fixed]

$ gmake  
…  
xlc\_r -g -DRUBY\_EXPORT -I. -I. -c parse.c  
“intern.h”, line 28.7: 1506-166 (S) Definition of function rb\_ary\_new3  
requires parentheses.  
“intern.h”, line 28.19: 1506-276 (S) Syntax error: possible missing ‘{’?  
“node.h”, line 21.5: 1506-045 (S) Undeclared identifier NODE\_METHOD.  
…  
[fixed]

$ gmake  
…  
xlc\_r -g -DRUBY\_EXPORT -L. -bE:ruby.imp -brtl main.o  
libruby-static.a -lpthread -ldl -lcrypt -lm -o miniruby  
gmake: \*\*\* [.rbconfig.time] IOT/Abort trap (core dumped)

$ dbx miniruby core  
(/usr/ccs/bin/dbx) where  
\_p\_raise(??) at 0xd01242a4  
raise.raise(??) at 0xd0359c70  
abort.abort() at 0xd03b7f78  
rb\_jump\_context(env = 0x2ff20d30, val = 2), line 97 in “eval.c”  
rb\_iterate(it\_proc = 0x2001bd28, data1 = 537241180, bl\_proc =  
0x2001d5f4, data2 = 804381664), line 5417 in “eval.c”  
enum\_each\_with\_index(obj = 537241180), line 1508 in “enum.c”  
call\_cfunc(func = 0x2001bca4, recv = 537241180, len = 0, argc = 0, argv  
= (nil)), line 5752 in “eval.c”  
unnamed block in rb\_call0(klass = 537274880, recv = 537241180, id =  
3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0),  
line 5904 in “eval.c”  
unnamed block in rb\_call0(klass = 537274880, recv = 537241180, id =  
3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0),  
line 5904 in “eval.c”  
unnamed block in rb\_call0(klass = 537274880, recv = 537241180, id =  
3929, oid = 3929, argc = 0, argv = (nil), body = 0x200686a8, flags = 0),  
line 5904 in “eval.c”  
rb\_call0(klass = 537274880, recv = 537241180, id = 3929, oid = 3929,  
argc = 0, argv = (nil), body = 0x200686a8, flags = 0), line 5904 in  
“eval.c”  
rb\_call(klass = 537274880, recv = 537241180, mid = 3929, argc = 0, argv  
= (nil), scope = 0, self = 537300680), line 6151 in “eval.c”  
unnamed block in rb\_eval(self = 537300680, n = 0x20058870), line 3492 in  
“eval.c”  
unnamed block in rb\_eval(self = 537300680, n = 0x20058870), line 3492 in  
“eval.c”  
rb\_eval(self = 537300680, n = 0x20058870), line 3492 in “eval.c”  
unnamed block in rb\_eval(self = 537300680, n = 0x20058618), line 3222 in  
“eval.c”  
unnamed block in rb\_eval(self = 537300680, n = 0x20058618), line 3222 in  
“eval.c”  
unnamed block in rb\_eval(self = 537300680, n = 0x20058618), line 3222 in  
“eval.c”  
rb\_eval(self = 537300680, n = 0x20058618), line 3222 in “eval.c”  
eval\_node(self = 537300680, node = 0x20058618), line 1436 in “eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
unnamed block in rb\_load(fname = 537233720, wrap = 0), line 7032 in  
“eval.c”  
rb\_load(fname = 537233720, wrap = 0), line 7032 in “eval.c”  
unnamed block in rb\_require\_safe(fname = 537233880, safe = 0), line 7389  
in “eval.c”  
unnamed block in rb\_require\_safe(fname = 537233880, safe = 0), line 7389  
in “eval.c”  
rb\_require\_safe(fname = 537233880, safe = 0), line 7389 in “eval.c”  
rb\_require(fname = “./ext/purelib.rb”), line 7429 in “eval.c”  
unnamed block in rb\_protect(proc = 0x2001e3bc, data = 537575944, state =  
0x2ff22424), line 5526 in “eval.c”  
rb\_protect(proc = 0x2001e3bc, data = 537575944, state = 0x2ff22424),  
line 5526 in “eval.c”  
unnamed block in require\_libraries(), line 387 in “ruby.c”  
require\_libraries(), line 387 in “ruby.c”  
unnamed block in load\_file(fname = “./mkconfig.rb”, script = 1), line  
974 in “ruby.c”  
load\_file(fname = “./mkconfig.rb”, script = 1), line 974 in “ruby.c”  
proc\_options(argc = 4, argv = 0x2ff229c8), line 853 in “ruby.c”  
ruby\_process\_options(argc = 10, argv = 0x2ff229b0), line 1246 in  
“ruby.c”  
unnamed block in ruby\_options(argc = 10, argv = 0x2ff229b0), line 1532  
in “eval.c”  
ruby\_options(argc = 10, argv = 0x2ff229b0), line 1532 in “eval.c”  
unnamed block in main(argc = 10, argv = 0x2ff229b0, envp = 0x2ff229dc),  
line 47 in “main.c”  
main(argc = 10, argv = 0x2ff229b0, envp = 0x2ff229dc), line 47 in  
“main.c”

–  
albert chin (china @at@ thewrittenword .dot. com)

– snip snip  
— eval.c.orig 2008-08-04 03:24:26.000000000 +0000  
+++ eval.c 2008-10-16 15:52:27.000000000 +0000  
@@ -12090,7 +12090,7 @@  
return th;  
}

-static int thread\_init;  
+static int rbthread\_init;

#if defined(\_THREAD\_SAFE)  
static void  
@@ -12164,7 +12164,7 @@  
{  
struct itimerval tval;

- if (!thread\_init) return;

- if (!rbthread\_init) return;  
tval.it\_interval.tv\_sec = 0;  
tval.it\_interval.tv\_usec = 10000;  
tval.it\_value = tval.it\_interval;  
@@ -12176,7 +12176,7 @@  
{  
struct itimerval tval;

- if (!thread\_init) return;

- if (!rbthread\_init) return;  
tval.it\_interval.tv\_sec = 0;  
tval.it\_interval.tv\_usec = 0;  
tval.it\_value = tval.it\_interval;  
@@ -12203,8 +12203,8 @@  
“can’t start a new thread (frozen ThreadGroup)”);  
}

- if (!thread\_init) {
- thread\_init = 1;

- if (!rbthread\_init) {
- rbthread\_init = 1;  
#if defined(HAVE\_SETITIMER) || defined(\_THREAD\_SAFE)  
#if defined(POSIX\_SIGNAL)  
posix\_signal(SIGVTALRM, catch\_timer);  
— intern.h.orig 2008-07-07 03:29:28.000000000 +0000  
+++ intern.h 2008-10-16 15:52:33.000000000 +0000  
@@ -25,7 +25,7 @@  
VALUE rb\_check\_array\_type \_((VALUE));  
VALUE rb\_ary\_new \_((void));  
VALUE rb\_ary\_new2 \_((long));  
-VALUE rb\_ary\_new3 \_\_((long,…));  
+VALUE rb\_ary\_new3 \_((long,…));  
VALUE rb\_ary\_new4 \_((long, const VALUE _));  
VALUE rb\_ary\_freeze \_((VALUE));  
VALUE rb\_ary\_aref \_((int, VALUE_, VALUE));  
@@ -141,11 +141,11 @@  
VALUE rb\_exc\_new \_((VALUE, const char\*, long));  
VALUE rb\_exc\_new2 \_((VALUE, const char\*));  
VALUE rb\_exc\_new3 \_((VALUE, VALUE));  
-NORETURN(void rb\_loaderror \_\_((const char\*, …)));  
-NORETURN(void rb\_name\_error \_\_((ID, const char\*, …)));  
+NORETURN(void rb\_loaderror \_((const char\*, …)));  
+NORETURN(void rb\_name\_error \_((ID, const char\*, …)));  
NORETURN(void rb\_invalid\_str \_((const char\*, const char\*)));  
-void rb\_compile\_error \_\_((const char\*, …));  
-void rb\_compile\_error\_append \_\_((const char\*, …));  
+void rb\_compile\_error \_((const char\*, …));  
+void rb\_compile\_error\_append \_((const char\*, …));  
NORETURN(void rb\_load\_fail \_((const char\*)));  
NORETURN(void rb\_error\_frozen \_((const char\*)));  
void rb\_check\_frozen \_((VALUE));  
@@ -236,7 +236,7 @@  
VALUE rb\_thread\_local\_aset \_((VALUE, ID, VALUE));  
void rb\_thread\_atfork \_((void));  
VALUE rb\_exec\_recursive \_((VALUE(_)(VALUE, VALUE, int),VALUE,VALUE));  
-VALUE rb\_funcall\_rescue \_\_((VALUE, ID, int, …));  
+VALUE rb\_funcall\_rescue \_((VALUE, ID, int, …));  
/_ file.c _/  
VALUE rb\_file\_s\_expand\_path \_((int, VALUE ));  
VALUE rb\_file\_expand\_path \_((VALUE, VALUE));  
@@ -249,7 +249,7 @@  
char rb\_path\_end \_((const char ));  
VALUE rb\_file\_directory\_p \_((VALUE,VALUE));  
/ gc.c /  
-NORETURN(void rb\_memerror \_\_((void)));  
+NORETURN(void rb\_memerror \_((void)));  
int ruby\_stack\_check \_((void));  
int ruby\_stack\_length \_((VALUE));  
int rb\_during\_gc \_((void));  
@@ -463,8 +463,8 @@  
void rb\_str\_setter \_((VALUE, ID, VALUE));  
VALUE rb\_str\_intern \_((VALUE));  
/_ struct.c _/  
-VALUE rb\_struct\_new \_\_((VALUE, …));  
-VALUE rb\_struct\_define \_\_((const char_, …));  
+VALUE rb\_struct\_new \_((VALUE, …));  
+VALUE rb\_struct\_define \_((const char\*, …));  
VALUE rb\_struct\_alloc \_((VALUE, VALUE));  
VALUE rb\_struct\_aref \_((VALUE, VALUE));  
VALUE rb\_struct\_aset \_((VALUE, VALUE, VALUE));
