Hi!

I am currently trying to compile ruby under AIX for 64-bits.

I could successfully compile and run ruby on the same box for 32 bits.

I used the actual stable snapshot of yesterday (8/23/2001).
I was succeeded to generate the executable miniruby,
but it crashes in the garbage collection:

$ miniruby mkconfig.rb
mkconfig.rb:118: [BUG] Segmentation fault
ruby 1.6.4 (2001-08-20) [powerpc-aix4.3.3.0]
IOT/Abort trap(coredump)

I tried to let it run in the debugger:
the stack traceback looks as follows:

mark_locations_array(x = 0x0000000000005000, n = 0), line 377 in "gc.c"
rb_gc_mark_locations(start = (nil), end = 0x0ffffffffffffd00), line 397
in "gc.c"
rb_gc(), line 1009 in "gc.c"

It is clearly strange, since one can't really see the traceback.

I have tried to step to the point in the debugger.

I ve got the following traceback at

rb_gc(), line 1007 in "gc.c"
load_file(0x1, 0x100177e0), line 854 in "ruby.c"
proc_options(0x1, 0x100855e0), line 725 in "ruby.c"
ruby_process_options(0x0, 0x200fe588), line 1028 in "ruby.c"
unnamed block $b228, line 1128 in "eval.c"
ruby_options(0xbadc0ffe, 0xe0ddf00d), line 1128 in "eval.c"
main(argc = 2, argv = 0x00000000200fe588, envp = 0x00000000200fe5a0),
line 49 in "main.c"
warning: Frame information in error at 0x100000444

(Note that something already corrupted the frame information.
I don't know what...)

It seems that the setjmp at 1007 corrupts the stack further.

After executing this line, the stack traceback consisted only of the
line

rb_gc(), line 1008 in "gc.c"

On the other hand the value of the stack_end variable becomes zero after

executing the 1007 setjmp line.

(The setjmp.h is correctly included, I have looked at the preprocessed
 file.)

If I comment out everything after the setjmp line, then it will
immediately crash with illegal instruction as it leaves the function.
This is not surprising...

I'd be gratefull for any help!

Best regards, Christian Szegedy

--
signature file is under construction