Forum: JRuby JRE 7 / JRuby 1.7.13 - fatal error precompiling assets for Rails 3.2.x application

Fa26eb433ab6cddb62f459cf2524cc3b?d=identicon&s=25 TJG (Guest)
on 2014-07-09 04:52
(Received via mailing list)
Environment:

Ubuntu 12.04 LTS
JRuby 1.7.13
JRE 7.0_60-b19
Rails 3.2.12 application

Hi all;

Does anyone recognize this problem or can anyone suggest what I might
try
to figure out what's gone wrong?

$ *jruby -S rake assets:precompile:all RAILS_ENV=staging
RAILS_GROUPS=assets*

Starts off okay...

Compiled jquery-plugins/jquery.blockUI.js  (2ms)  (pid 29552)
Compiled jquery-plugins/jquery.cookie.js  (2ms)  (pid 29552)
Compiled jquery-plugins/jquery.form.js  (13ms)  (pid 29552)
Compiled jquery-plugins/jquery.safeEnter.js  (0ms)  (pid 29552)
Compiled ckeditor/basepath.js  (16ms)  (pid 29552)
Compiled ckeditor/ckeditor.js  (7ms)  (pid 29552)
Compiled ckeditor/jquery.js  (0ms)  (pid 29552)
Compiled ckeditor-jquery.js  (118ms)  (pid 29552)
Compiled application.js  (1346ms)  (pid 29552)
Compiled admin.js  (1389ms)  (pid 29552)

Then... boom:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f32b205cff1, pid=29552,
tid=139855679133440
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b19) (build
1.7.0_60-b19)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b09 mixed mode
linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x5c2ff1]  oopDesc::size_given_klass(Klass*)+0x1
#
# Failed to write core dump. Core dumps have been disabled. To enable
core
dumping, try "ulimit -c unlimited" before starting Java again


[ From error dump ]:
VM Arguments:
jvm_args: -Xmx500m -Xss2048k
-Djffi.boot.library.path=/home/sshadmin/.rvm/rubies/jruby-1.7.13/lib/jni
-Xbootclasspath/a:/home/sshadmin/.rvm/rubies/jruby-1.7.13/lib/jruby.jar
-Djruby.home=/home/sshadmin/.rvm/rubies/jruby-1.7.13
-Djruby.lib=/home/sshadmin/.rvm/rubies/jruby-1.7.13/lib
-Djruby.script=jruby -Djruby.shell=/bin/sh
java_command: org.jruby.Main -S rake assets:precompile:all
RAILS_ENV=staging RAILS_GROUPS=assets
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60
PATH=/webapps/polar/shared/bundle/jruby/1.9/bin:/home/sshadmin/.rvm/gems/jruby-1.7.13/bin:/home/sshadmin/.rvm/gems/jruby-1.7.13@global
/bin:/home/sshadmin/.rvm/rubies/jruby-1.7.13/bin:/home/sshadmin/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/imagemagick-6.7.2/bin:/usr/lib/postgresql/9.1/bin:/usr/lib/jvm/jdk1.7.0_60/bin
LD_LIBRARY_PATH=/usr/local/imagemagick-6.7.2/lib:/usr/local/imagemagick-6.7.2/lib:/usr/local/imagemagick-6.7.2/lib
SHELL=/bin/bash


Many thanks,
Tim
Fa26eb433ab6cddb62f459cf2524cc3b?d=identicon&s=25 TJG (Guest)
on 2014-07-13 17:52
(Received via mailing list)
Resolved this by installing *node.js* on the server, and dropping
*therubyrhino* gem.

Asset precompilation worked nicely, with no JVM segmentation faults.

And, on y development machine, asset precompilation dropped from 2
*hours*
to 7 *minutes*.

T
2c0c4cf3ccc8da22f7c3b9586ce1cd70?d=identicon&s=25 Christian MICHON (Guest)
on 2014-07-13 19:26
(Received via mailing list)
Moving from jruby to nodejs? Therubyrhino gem?

Could you please then explain your architecture? It's extremely unclear
from your 2 emails.

On 1st email I can see you allocated only 500Mb to your jruby job. I
would
advise for 1.5Gb if you're stuck on 32 bits, 2Gb and above if you're on
64
bits.
Fa26eb433ab6cddb62f459cf2524cc3b?d=identicon&s=25 TJG (Guest)
on 2014-07-13 19:34
(Received via mailing list)
Salut Christian;

Thanks for your observation about the memory allocation. Perhaps that
was
the original problem.

No, I didn't move my project from JRuby to nodejs. I just removed
therubyrhino javascript interpreter and now let the precompilation of
assets depend on node.js instead
https://github.com/sstephenson/execjs#readme

I do not understand the mechanics of it all, yet, but this change was
certainly a life-saver.

With no other changes (i.e. no increased memory or anything like that),
my
assets now precompile without failure by the JVM.


Tim



On Sun, Jul 13, 2014 at 1:25 PM, Christian MICHON <
2b2507f727d700eb59819b3a2e0c4a24?d=identicon&s=25 Chris Seaton (Guest)
on 2014-07-13 19:38
(Received via mailing list)
Rhino is not a fast implementation of JS - whether or not its integrated
into JRuby via therubyrhino. Is anyone working on a therubynashorn yet?

Chris
2c0c4cf3ccc8da22f7c3b9586ce1cd70?d=identicon&s=25 Christian MICHON (Guest)
on 2014-07-13 19:42
(Received via mailing list)
An excellent idea. Careful though: JDK8 is mandatory for Nashorn.

And I understood just now why therubyrhino: rails complex stack for
asset
compilation. Why not sprockets instead?
302c6c56b99912a673f1213b0709c902?d=identicon&s=25 Alex Tambellini (Guest)
on 2014-07-13 19:45
(Received via mailing list)
Something that sped up our asset compilation process a ton was switching
from uglifier.js to the google closure compiler:

By adding this gem to your Gemfile:

gem 'closure-compiler

and setting the rails javascript compressor to closure compiler:

config.assets.js_compressor = :closure

https://github.com/documentcloud/closure-compiler/
Fa26eb433ab6cddb62f459cf2524cc3b?d=identicon&s=25 TJG (Guest)
on 2014-07-13 21:18
(Received via mailing list)
THanks very much for the suggestion, Alex.

I'll give that a shot and compare compile times.

Tim



On Sun, Jul 13, 2014 at 1:45 PM, Alex Tambellini <atambellini@gmail.com>
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.