On 4/19/07, Nobuyoshi Nakada <nobu / ruby-lang.org> wrote:
> Hi,
>
> At Thu, 19 Apr 2007 22:30:47 +0900,
> Michal Suchanek wrote in [ruby-core:10970]:
> > This would break the previous fix so I did not even try to apply this ^
>
> Sorry, mistaken.
>
> > This part looks good and it allows building ruby as long as the binary
> > extension dir is different. However, after changing config.guess to
> > report the same platform as the previous build I can no longer build
> > ruby.
>
> Why did you change config.guess?  What do you mean by "the
> previous build"?
>
> > Apparently the dl extension uses the etc extension in some way,
> > I tried to rename ect to 0etc so that it is built first, and add
> > -I$(extout) to the miniruby command line but it still does not work:
>
> 'etc' is required via fileutils.rb and mkmf.rb.
>
> > ../../miniruby -I'../..' -I'../.././lib' -I../../.ext
> > ../.././ext/dl/mkcallback.rb > callback.func
> > /sw/lib/ruby/1.8/i686-darwin/etc.bundle: [BUG] Bus Error
> > ruby 1.8.6 (2007-03-13) [i686-darwin]
>
> Can't you show the backtrace if core exists?
>
For some reason the crash does not create a core. However, running
with the same arguments inside gdb gives tis backtrace:

(gdb) run -I'../..' -I'../.././lib' -I../../.ext ../.././ext/dl/mkcallback.rb
Starting program:
/sw/src/fink.build/ruby18-1.8.6-1/ruby-1.8.6/miniruby -I'../..'
-I'../.././lib' -I../../.ext ../.././ext/dl/mkcallback.rb
Reading symbols for shared libraries .. done

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x0057a662 in st_lookup (table=0x0, key=1949342, value=0xbfffd1ac) at st.c:250
250     st.c: No such file or directory.
        in st.c
(gdb) bt
#0  0x0057a662 in st_lookup (table=0x0, key=1949342, value=0xbfffd1ac)
at st.c:250
#1  0x00550c49 in rb_intern (name=0x1dbe9e "Etc") at parse.y:6023
#2  0x0050e801 in rb_define_module (name=0x1dbe9e "Etc") at class.c:305
#3  0x001db62b in Init_etc () at etc.c:506
#4  0x000841e5 in dln_load (file=0x48f930
"/sw/lib/ruby/1.8/i686-darwin/etc.bundle") at dln.c:1476
#5  0x00018c76 in rb_require_safe (fname=3294300, safe=0) at eval.c:7222
#6  0x0000c458 in rb_call0 (klass=1944720, recv=3235240, id=9449,
oid=9449, argc=1, argv=0xbfffd5a0, body=0x1cbd80, flags=2) at
eval.c:5815
#7  0x0000cdb7 in rb_call (klass=1944720, recv=3235240, mid=9449,
argc=1, argv=0xbfffd5a0, scope=1, self=3235240) at eval.c:6062
#8  0x0000a421 in rb_eval (self=3235240, n=0x0) at eval.c:3468
#9  0x000098b2 in rb_eval (self=3235240, n=0x0) at eval.c:3263
#10 0x00016a86 in module_setup (module=0, n=0x315dd0) at eval.c:4152
#11 0x0000bebc in rb_eval (self=1939860, n=0x0) at eval.c:4082
#12 0x000185c5 in rb_load (fname=3379640, wrap=0) at eval.c:6857
#13 0x00018c23 in rb_require_safe (fname=1869760, safe=0) at eval.c:7213
#14 0x0000c458 in rb_call0 (klass=1944720, recv=1939860, id=9449,
oid=9449, argc=1, argv=0xbfffeab0, body=0x1cbd80, flags=2) at
eval.c:5815
#15 0x0000cdb7 in rb_call (klass=1944720, recv=1939860, mid=9449,
argc=1, argv=0xbfffeab0, scope=1, self=1939860) at eval.c:6062
#16 0x0000a421 in rb_eval (self=1939860, n=0x0) at eval.c:3468
#17 0x000185c5 in rb_load (fname=1870040, wrap=0) at eval.c:6857
#18 0x00018c23 in rb_require_safe (fname=1877540, safe=0) at eval.c:7213
#19 0x0000c458 in rb_call0 (klass=1944720, recv=1939860, id=9449,
oid=9449, argc=1, argv=0xbffff140, body=0x1cbd80, flags=2) at
eval.c:5815
#20 0x0000cdb7 in rb_call (klass=1944720, recv=1939860, mid=9449,
argc=1, argv=0xbffff140, scope=1, self=1939860) at eval.c:6062
#21 0x0000a421 in rb_eval (self=1939860, n=0x0) at eval.c:3468
#22 0x00018f13 in ruby_exec_internal () at eval.c:1608
#23 0x00018f44 in ruby_exec () at eval.c:1628
#24 0x00018f6f in ruby_run () at eval.c:1638
#25 0x000024f3 in main (argc=5, argv=0xbffff554, envp=0xbffff56c) at main.c:48


I am not sure this is of much use,though. It loads the already
installed etc extension which might be arbitrarily broken, and is out
of control of the build process.

Thanks

Michal