buildr-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Spiewak <djspie...@gmail.com>
Subject Re: segfaults with java 6
Date Sun, 02 Aug 2009 04:14:48 GMT
Minor versions should be ok, though I would be careful going between 1.6.0
and 1.6.0_10 (or _03 and _14 as in your example).  I'm honestly not sure
that switching between JDKs is a particularly common use-case.  It's really
annoying that RJB is like this, but I don't see any other way as long as the
bridge is using JNI under the surface.

Another (possibly better) option would be to run Java in a sub-process
spawned by Ruby with socket communication between the two.  This would
prevent incompatibility mismatch and cut the tight coupling to JVM
installations.  The main downside to this is that no one has done anything
like this (to my knowledge), so it's not a pre-existing (stable) solution
like RJB.  The immediate advantage to such a solution though is that it
would allow us to finally support Buildr on MRI with Java 6 on Mac.

Daniel

On Sat, Aug 1, 2009 at 6:35 PM, Martin Grotzke <martin.grotzke@javakaffee.de
> wrote:

> D'oh, no good news. What about switching between minor versions, e.g.
> from 1.6.0_03 to 1.6.0_14?
>
> Wouldn't it be good to be able to have several rjb versions running in
> parallel, and to switch them with s.th. like alternatives? (the rjb
> version then would have to include the used/linked jdk version, s.th.
> like <rjbversion-jdkversion>).
>
> Cheers,
> Martin
>
>
> On Sat, 2009-08-01 at 16:37 -0500, Daniel Spiewak wrote:
> > Yes, it does.
> >
> > Daniel
> >
> > On Sat, Aug 1, 2009 at 4:20 PM, Martin Grotzke <
> martin.grotzke@javakaffee.de
> > > wrote:
> >
> > > Does this mean, that when one switches the current jvm (e.g. from 1.5
> to
> > > 1.6) one would have to reinstall rjb, so that it uses the correct jdk
> > > header files?
> > >
> > > Cheers,
> > > Martin
> > >
> > >
> > > On Thu, 2009-07-30 at 08:58 -0500, Daniel Spiewak wrote:
> > > > If it makes you feel any better, the problem is with RJB and not
> Buildr
> > > > itself.  However, that doesn't change anything about user
> perception...
> > > >
> > > > To be honest, I'm with you on this one.  I would much rather run
> Buildr
> > > > under MRI, or really *any* Ruby implementation other than JRuby.
>  Don't
> > > get
> > > > me wrong, I love the JRuby project, but a tool like Buildr lives and
> dies
> > > by
> > > > startup time, an area where JRuby does very poorly.  One option which
> > > might
> > > > work on Mac OS X (one which I haven't tried) is to use SoyLatte 32bit
> (
> > > >
> > >
> http://hg.bikemonkey.org/archive/javasrc_1_6_jrl_darwin/soylatte16-i386-1.0.3.tar.bz2
> > > ).
> > > > Note that if you take this route, you will need to do more than just
> set
> > > > JAVA_HOME and the PATH, you will need to actually symlink
> > > >
> /System/Library/Frameworks/JavaVM.framework/Versions/SoyLatte/Libraries
> > > to
> > > > the correct directory within SoyLatte, and then
> > > > /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK to
> > > > /System/Library/Frameworks/JavaVM.framework/Versions/SoyLatte.  Crazy
> > > Apple
> > > > VM layout...
> > > >
> > > > As for running Buildr with Java 6 on other platforms, like Linux or
> > > Windows,
> > > > I've actually had a lot more success along those lines.  To be
> honest,
> > > I've
> > > > never had it segfault on Windows, and on Linux only when RJB has been
> > > > incorrectly compiled/linked.  So, the main trouble is Mac, and as the
> > > > "Common Problems and Solutions" document states, the trouble is 32bit
> MRI
> > > > mixing with 64bit Java.  The only possible solution I can see here is
> to
> > > > create an entirely new Ruby-Java bridge based on sockets.  Obviously,
> > > this
> > > > isn't a viable option (unless someone wants to volunteer?).
> > > >
> > > > So, that brings us back to square one.  I don't know what else to say
> at
> > > > this point, we really have tried a lot of different solutions to this
> > > > problem, none of which have worked terribly well.
> > > >
> > > > Daniel
> > > >
> > > > On Thu, Jul 30, 2009 at 7:00 AM, Martin Grotzke <
> > > > martin.grotzke@javakaffee.de> wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I just want to address the issue, that with java 6 there can occur
> > > > > segfaults from time to time. The advice ([1]) is to go back to java
> 5
> > > or
> > > > > to use jruby. Both solution are not ideal IMHO. java 5 might not
be
> an
> > > > > option as there are already projects that require java 6, and jruby
> is
> > > > > not ideal as it has longer startup times of buildr. Therefore, from
> my
> > > > > point of view, running buildr "natively" is the best option and if
> it's
> > > > > required with java 6.
> > > > >
> > > > > For new users this might be an issue that causes a loss of trust
in
> > > > > buildr and the stable build.
> > > > >
> > > > > Do you also think that this issue should be addressed and
> eliminated?
> > > > >
> > > > > Are you aware of any reasons that might cause the segmentation
> faults?
> > > > >
> > > > > I have also a concrete example (from one of my colleagues) with a
> > > > > segmentation fault. That's a part from the build output:
> > > > >
> > > > > $ buildr clean; buildr -t
> > > > > ...
> > > > > Testing needed. Latest prerequisite change: Do Jul 30 10:59:26
> +0200
> > > 2009
> > > > > (/home/philip/projects/final-folder/buildfile). Last successful
> test
> > > run:
> > > > > <EARLY TIME>.
> > > > > ** Invoke ff:core:test (first_time)
> > > > > ** Invoke /home/philip/projects/final-folder/buildfile (not_needed)
> > > > > ** Invoke ff:core:test:compile (first_time)
> > > > > ** Invoke ff:core:compile (not_needed)
> > > > > ** Invoke ff:core:test:resources (first_time)
> > > > > ** Execute ff:core:test:resources
> > > > > ** Invoke
> /home/philip/projects/final-folder/core/target/test/resources
> > > > > (first_time)
> > > > > ** Execute
> > > /home/philip/projects/final-folder/core/target/test/resources
> > > > > Segmentation fault
> > > > >
> > > > > This is caused by the invocation of just buildr (without any task),
> if
> > > > > buildr is invoked with a task (e.g. build, compile or test) there's
> no
> > > > > segementation fault.
> > > > >
> > > > > This are the versions of buildr, ruby and java:
> > > > > Java: 1.6.0_14
> > > > > Ruby: 1.8.7
> > > > > Buildr: 1.3.4
> > > > >
> > > > > If that's also the case for other users, a first workaround might
> be
> > > not
> > > > > to promote the invocation of just "buildr", but instead say that
> > > "buildr
> > > > > build" should be run.
> > > > >
> > > > > What do you think?
> > > > >
> > > > > Thanx && cheers,
> > > > > Martin
> > > > >
> > > > >
> > > > > [1]
> > > > >
> > >
> http://cwiki.apache.org/confluence/display/BUILDR/Common+Problems+and+Solutions
> > > > >
> > > > >
> > > > >
> > >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message