On 22/08/09 at 12:58 +0200, Petr Salinger wrote:
>
> >#913 test_thread.rb:219:in `<top (required)>':
> > open("zzz.rb", "w") do |f|
> > f.puts <<-END
> > begin
> > Thread.new { fork { GC.start } }.join
> > pid, status = Process.wait2
> > $result = status.success? ? :ok : :ng
> > rescue NotImplementedError
> > $result = :ok
> > end
> > END
> > end
> > require "zzz.rb"
> > $result
> > #=> "" (expected "ok")
> >
> >Uh?
> >
> >#916 test_thread.rb:254:in `<top (required)>':
> > STDERR.reopen(STDOUT)
> > exec "/"
> > #=> killed by signal 32
> >
> >Same: uh? What's signal 32 on FreeBSD?
>
> It is internal to threading library, similarly to linuxthreads.
Arg. ruby tends to make assumptions about the thread library. If it
doesn't behave like NPTL, then some things might break. We had a similar
problem with hppa some time ago.
> What the "fork { GC.start }" should do ?
fork() the interpreter and run the garbage collector in the child. Not
sure why they do that.
--
| Lucas Nussbaum
| [email protected] http://www.lucas-nussbaum.net/ |
| jabber: [email protected] GPG: 1024D/023B3F4F |
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]