What's required to fix this issue is somebody who's fairly knowledgeable
about C/C++ who can dig into RJB and pinpoint the bug, probably using a
combination of core dump analysis and interactive debugger to step through
the Ruby -> RJB -> JDK invocation chain.

Having a fairly small reproducible case for the segfault would also help so
if you have one please file it in Jira.

alex

On Thu, Jul 30, 2009 at 6:58 AM, Daniel Spiewak <[email protected]> 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 <
> [email protected]> 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
> >
> >
> >
>

Reply via email to