-
Notifications
You must be signed in to change notification settings - Fork 56
Open
Description
Using rsruby in a sinatra/rack app.
def initialize(app)
super(app)
@r = RSRuby.instance
end
get '/test.json' do
content_type 'text/plain'
out = @r.seq(1,9)
out.to_json
end
The calls to R work as expected in irb and when ruby is run from the command line. They fail when run through rackup or with passenger. Log contains a lot of this...
App 29404 stderr: Error during wrapup: C stack usage is too close to the limit
App 29404 stderr: Error during wrapup: C stack usage is too close to the limit
App 29404 stderr: Error during wrapup: C stack usage is too close to the limit
App 29404 stderr: Error during wrapup: C stack usage is too close to the limit
App 29404 stderr: Error during wrapup: C stack usage is too close to the limit
In rsruby.rb I commented out the error trapping
#Catch errors
# self.__init_eval_R__("options(error=expression(NULL))")
#disable errors
# self.__init_eval_R__("options(show.error.messages=F)")
This reveals a little more detail
App 27581 stderr: *** caught segfault ***
App 27581 stderr: address 0x11000088, cause 'memory not mapped'
App 27581 stderr: aborting ...
[ 2014-03-26 16:20:36.8674 27558/0x1091c2000 Pool2/SmartSpawner.h:689 ]: An error occurred while spawning a process: An error occurred while starting the web application. It exited before signalling successful startup back to Phusion Passenger.
[ 2014-03-26 16:20:36.8674 27558/0x1091c2000 Pool2/SmartSpawner.h:690 ]: The application preloader seems to have crashed, restarting it and trying again...
Moving the call to RSRuby.instance into the controller causes similar errors. Also if @r.seq(1,9) is moved into the initialize block it performs as expected. It seems that the controller environment is where any reference into rsruby fails.
Metadata
Metadata
Assignees
Labels
No labels