buildr-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Grotzke <martin.grot...@javakaffee.de>
Subject Re: segfaults with java 6
Date Mon, 03 Aug 2009 13:10:08 GMT
I thought again about this switching-jdks issue, and it's not as
essential as I thought before. Even if the projects later run on
different jvms in production, the developer itself could build the
java-1.4 compatible project with the 1.6 jdk, if the source and target
arguments are correctly set for javac.

Only the continuous integration server should build/test the projects
using the "real" target jdk, but in this case one or two seconds more
for startup are not an issue.


So I'd suggest that the setup/install guide points out that for the
installation of buildr/rjb the JAVA_HOME has to be set to the JAVA_HOME
that's used later for building the project.

Also the troubleshooting guide should describe what can be done if rjb
once is messed up: one should remove and reinstall rjb with the correct
JAVA_HOME env variable set.
(An interesting observation: even if the troubleshooting guide explains
what's the reason for segfaults both a colleage and I didn't get it
really (or just didn't read it carefully enough) and didn't get what has
to be done to fix the segfault.)

Do you agree with these changes? Shall I do any of them?

Cheers,
Martin



On Sun, 2009-08-02 at 18:00 -0500, Daniel Spiewak wrote:
> If switching between JDK versions is an essential feature, then really your
> only option at present is to use JRuby.  It's actually a pretty good way to
> use Buildr, just as good in every respect except for startup time (~2
> seconds as opposed to ~50ms).  If you're using a modern Sun VM (>=1.6.0_10)
> then the startup time could be even less than 1 sec (at least in my tests).
> 
> Hopefully, either I or someone else will get a chance to implement a
> socket-based Ruby-Java bridge, but until then...  :-S
> 
> Daniel
> 
> On Sun, Aug 2, 2009 at 8:12 AM, Martin Grotzke <martin.grotzke@javakaffee.de
> > wrote:
> 
> > On Sat, 2009-08-01 at 23:14 -0500, Daniel Spiewak wrote:
> > > 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.
> > In our company this is a common use case, as lots of developers are
> > working on several projects that use different jvm versions - depending
> > on the client, app server, project infrastructure etc.
> >
> > >
> > > 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.
> > Puh, sound rather robust but also as if this would require huge amounts
> > of work.
> >
> > Now I also addressed this in the rjb forum:
> > http://rubyforge.org/forum/forum.php?thread_id=45030&forum_id=8190
> >
> > Cheers,
> > Martin
> >
> >
> > >
> > > 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
View raw message