Skip to content

Instantly share code, notes, and snippets.

@myitcv

myitcv/Gemfile Secret

Last active January 3, 2016 11:19
Show Gist options
  • Save myitcv/22d3de3161e925eb72be to your computer and use it in GitHub Desktop.
Save myitcv/22d3de3161e925eb72be to your computer and use it in GitHub Desktop.
Demonstration of a bug/strange behaviour using celluloid with Rubinius
source "https://rubygems.org"
gem 'celluloid', github: 'celluloid/celluloid'
gem 'celluloid-io', github: 'celluloid/celluloid-io'
gem 'http', github: 'tarcieri/http'
gem 'rubysl'
group :development do
gem 'pry'
end
GIT
remote: git://github.com/celluloid/celluloid-io.git
revision: 7ce68a55cfcc5bf8d95295cc287d112e082ad509
specs:
celluloid-io (0.16.0.pre)
celluloid (>= 0.16.0.pre)
nio4r (>= 1.0.0)
GIT
remote: git://github.com/celluloid/celluloid.git
revision: 163132ea3dd42b69c58224f3e244335532677f1c
specs:
celluloid (0.16.0.pre)
timers (~> 2.0.0)
GIT
remote: git://github.com/tarcieri/http.git
revision: d806459155c8abd98070b9d6c2e1f7f896d97672
specs:
http (0.6.0.pre)
http_parser.rb (~> 0.6.0)
GEM
remote: https://rubygems.org/
specs:
coderay (1.1.0)
ffi2-generators (0.1.1)
hitimes (1.2.1)
http_parser.rb (0.6.0)
method_source (0.8.2)
nio4r (1.0.0)
pry (0.9.12.4)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
rubysl (2.0.15)
rubysl-abbrev (~> 2.0)
rubysl-base64 (~> 2.0)
rubysl-benchmark (~> 2.0)
rubysl-bigdecimal (~> 2.0)
rubysl-cgi (~> 2.0)
rubysl-cgi-session (~> 2.0)
rubysl-cmath (~> 2.0)
rubysl-complex (~> 2.0)
rubysl-continuation (~> 2.0)
rubysl-coverage (~> 2.0)
rubysl-csv (~> 2.0)
rubysl-curses (~> 2.0)
rubysl-date (~> 2.0)
rubysl-delegate (~> 2.0)
rubysl-digest (~> 2.0)
rubysl-drb (~> 2.0)
rubysl-e2mmap (~> 2.0)
rubysl-english (~> 2.0)
rubysl-enumerator (~> 2.0)
rubysl-erb (~> 2.0)
rubysl-etc (~> 2.0)
rubysl-expect (~> 2.0)
rubysl-fcntl (~> 2.0)
rubysl-fiber (~> 2.0)
rubysl-fileutils (~> 2.0)
rubysl-find (~> 2.0)
rubysl-forwardable (~> 2.0)
rubysl-getoptlong (~> 2.0)
rubysl-gserver (~> 2.0)
rubysl-io-console (~> 2.0)
rubysl-io-nonblock (~> 2.0)
rubysl-io-wait (~> 2.0)
rubysl-ipaddr (~> 2.0)
rubysl-irb (~> 2.0)
rubysl-logger (~> 2.0)
rubysl-mathn (~> 2.0)
rubysl-matrix (~> 2.0)
rubysl-mkmf (~> 2.0)
rubysl-monitor (~> 2.0)
rubysl-mutex_m (~> 2.0)
rubysl-net-ftp (~> 2.0)
rubysl-net-http (~> 2.0)
rubysl-net-imap (~> 2.0)
rubysl-net-pop (~> 2.0)
rubysl-net-protocol (~> 2.0)
rubysl-net-smtp (~> 2.0)
rubysl-net-telnet (~> 2.0)
rubysl-nkf (~> 2.0)
rubysl-observer (~> 2.0)
rubysl-open-uri (~> 2.0)
rubysl-open3 (~> 2.0)
rubysl-openssl (~> 2.0)
rubysl-optparse (~> 2.0)
rubysl-ostruct (~> 2.0)
rubysl-pathname (~> 2.0)
rubysl-prettyprint (~> 2.0)
rubysl-prime (~> 2.0)
rubysl-profile (~> 2.0)
rubysl-profiler (~> 2.0)
rubysl-pstore (~> 2.0)
rubysl-pty (~> 2.0)
rubysl-rational (~> 2.0)
rubysl-readline (~> 2.0)
rubysl-resolv (~> 2.0)
rubysl-rexml (~> 2.0)
rubysl-rinda (~> 2.0)
rubysl-rss (~> 2.0)
rubysl-scanf (~> 2.0)
rubysl-securerandom (~> 2.0)
rubysl-set (~> 2.0)
rubysl-shellwords (~> 2.0)
rubysl-singleton (~> 2.0)
rubysl-socket (~> 2.0)
rubysl-stringio (~> 2.0)
rubysl-strscan (~> 2.0)
rubysl-sync (~> 2.0)
rubysl-syslog (~> 2.0)
rubysl-tempfile (~> 2.0)
rubysl-thread (~> 2.0)
rubysl-thwait (~> 2.0)
rubysl-time (~> 2.0)
rubysl-timeout (~> 2.0)
rubysl-tmpdir (~> 2.0)
rubysl-tsort (~> 2.0)
rubysl-un (~> 2.0)
rubysl-uri (~> 2.0)
rubysl-weakref (~> 2.0)
rubysl-webrick (~> 2.0)
rubysl-xmlrpc (~> 2.0)
rubysl-yaml (~> 2.0)
rubysl-zlib (~> 2.0)
rubysl-abbrev (2.0.4)
rubysl-base64 (2.0.0)
rubysl-benchmark (2.0.1)
rubysl-bigdecimal (2.0.2)
rubysl-cgi (2.0.1)
rubysl-cgi-session (2.0.1)
rubysl-cmath (2.0.0)
rubysl-complex (2.0.0)
rubysl-continuation (2.0.0)
rubysl-coverage (2.0.3)
rubysl-csv (2.0.2)
rubysl-english (~> 2.0)
rubysl-curses (2.0.1)
rubysl-date (2.0.6)
rubysl-delegate (2.0.1)
rubysl-digest (2.0.3)
rubysl-drb (2.0.1)
rubysl-e2mmap (2.0.0)
rubysl-english (2.0.0)
rubysl-enumerator (2.0.0)
rubysl-erb (2.0.1)
rubysl-etc (2.0.3)
ffi2-generators (~> 0.1)
rubysl-expect (2.0.0)
rubysl-fcntl (2.0.4)
ffi2-generators (~> 0.1)
rubysl-fiber (2.0.0)
rubysl-fileutils (2.0.3)
rubysl-find (2.0.1)
rubysl-forwardable (2.0.1)
rubysl-getoptlong (2.0.0)
rubysl-gserver (2.0.0)
rubysl-socket (~> 2.0)
rubysl-thread (~> 2.0)
rubysl-io-console (2.0.0)
rubysl-io-nonblock (2.0.0)
rubysl-io-wait (2.0.0)
rubysl-ipaddr (2.0.0)
rubysl-irb (2.0.4)
rubysl-e2mmap (~> 2.0)
rubysl-mathn (~> 2.0)
rubysl-readline (~> 2.0)
rubysl-thread (~> 2.0)
rubysl-logger (2.0.0)
rubysl-mathn (2.0.0)
rubysl-matrix (2.1.0)
rubysl-e2mmap (~> 2.0)
rubysl-mkmf (2.0.1)
rubysl-fileutils (~> 2.0)
rubysl-shellwords (~> 2.0)
rubysl-monitor (2.0.0)
rubysl-mutex_m (2.0.0)
rubysl-net-ftp (2.0.1)
rubysl-net-http (2.0.4)
rubysl-cgi (~> 2.0)
rubysl-erb (~> 2.0)
rubysl-singleton (~> 2.0)
rubysl-net-imap (2.0.1)
rubysl-net-pop (2.0.1)
rubysl-net-protocol (2.0.1)
rubysl-net-smtp (2.0.1)
rubysl-net-telnet (2.0.0)
rubysl-nkf (2.0.1)
rubysl-observer (2.0.0)
rubysl-open-uri (2.0.0)
rubysl-open3 (2.0.0)
rubysl-openssl (2.0.6)
rubysl-optparse (2.0.1)
rubysl-shellwords (~> 2.0)
rubysl-ostruct (2.0.4)
rubysl-pathname (2.0.0)
rubysl-prettyprint (2.0.2)
rubysl-prime (2.0.1)
rubysl-profile (2.0.0)
rubysl-profiler (2.0.1)
rubysl-pstore (2.0.0)
rubysl-pty (2.0.2)
rubysl-rational (2.0.1)
rubysl-readline (2.0.2)
rubysl-resolv (2.0.0)
rubysl-rexml (2.0.2)
rubysl-rinda (2.0.0)
rubysl-rss (2.0.0)
rubysl-scanf (2.0.0)
rubysl-securerandom (2.0.0)
rubysl-set (2.0.1)
rubysl-shellwords (2.0.0)
rubysl-singleton (2.0.0)
rubysl-socket (2.0.1)
rubysl-stringio (2.0.0)
rubysl-strscan (2.0.0)
rubysl-sync (2.0.0)
rubysl-syslog (2.0.1)
ffi2-generators (~> 0.1)
rubysl-tempfile (2.0.1)
rubysl-thread (2.0.2)
rubysl-thwait (2.0.0)
rubysl-time (2.0.3)
rubysl-timeout (2.0.0)
rubysl-tmpdir (2.0.0)
rubysl-tsort (2.0.1)
rubysl-un (2.0.0)
rubysl-fileutils (~> 2.0)
rubysl-optparse (~> 2.0)
rubysl-uri (2.0.0)
rubysl-weakref (2.0.0)
rubysl-webrick (2.0.0)
rubysl-xmlrpc (2.0.0)
rubysl-yaml (2.0.4)
rubysl-zlib (2.0.1)
slop (3.4.7)
timers (2.0.0)
hitimes
PLATFORMS
ruby
DEPENDENCIES
celluloid!
celluloid-io!
http!
pry
rubysl
I, [2014-01-16T14:17:15.651789 #15427] INFO -- : request 1
I, [2014-01-16T14:17:15.656404 #15427] INFO -- : request 2
I, [2014-01-16T14:17:15.659770 #15427] INFO -- : request 3
I, [2014-01-16T14:17:15.660926 #15427] INFO -- : request 4
I, [2014-01-16T14:17:15.661814 #15427] INFO -- : request 5
I, [2014-01-16T14:17:15.662773 #15427] INFO -- : request 6
I, [2014-01-16T14:17:15.663665 #15427] INFO -- : request 7
I, [2014-01-16T14:17:15.664605 #15427] INFO -- : request 8
I, [2014-01-16T14:17:15.665552 #15427] INFO -- : request 9
I, [2014-01-16T14:17:15.666472 #15427] INFO -- : request 10
I, [2014-01-16T14:17:15.721508 #15427] INFO -- : response 8
I, [2014-01-16T14:17:15.777556 #15427] INFO -- : response 5
I, [2014-01-16T14:17:15.856233 #15427] INFO -- : response 2
I, [2014-01-16T14:17:15.869416 #15427] INFO -- : response 9
I, [2014-01-16T14:17:15.938036 #15427] INFO -- : response 7
I, [2014-01-16T14:17:15.965384 #15427] INFO -- : response 3
I, [2014-01-16T14:17:16.051087 #15427] INFO -- : response 4
An exception occurred running karl.rb:
Data object has already been freed (ArgumentError)
Backtrace:
E, [2014-01-16T14:17:16.205540 #15427] ERROR -- : Actor crashed!
ArgumentError: Data object has already been freed
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/response_parser.rb:12:in `<< (add)'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80:in `perform'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10:in `get'
karl.rb:11:in `fetch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:26:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:63:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:60:in `invoke'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:71:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/actor.rb:388:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks.rb:55:in `initialize'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks/task_fiber.rb:15:in `create'
kernel/bootstrap/proc.rb:20:in `call'
(celluloid):0:in `remote procedure call'
W, [2014-01-16T14:17:16.208900 #15427] WARN -- : Terminating task: type=:call, meta={:method_name=>:fetch}, status=:iowait
W, [2014-01-16T14:17:16.209173 #15427] WARN -- : Terminating task: type=:call, meta={:method_name=>:fetch}, status=:iowait
 HTTP::Response::Parser#<< (add) at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http
/response_parser.rb:12
HTTP::Client#perform at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80
HTTP::Client#request at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56
HTTP::Chainable(Module)#request at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50
HTTP::Chainable(Module)#get at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10
HttpFetcher#fetch at karl.rb:11
Celluloid::Call(Celluloid::SyncCall)#dispatch at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/calls.rb:26
Celluloid::SyncCall#dispatch at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/calls.rb:63
{ } in Celluloid::Cell#invoke at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/cell.rb:60
{ } in Celluloid::Cell#task at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/cell.rb:71
{ } in Celluloid::Actor#task at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/actor.rb:388
{ } in Celluloid::Task(Celluloid::TaskFiber)#initialize at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/tasks.rb:55
{ } in Celluloid::TaskFiber#create at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks
/task_fiber.rb:15
 Proc#call at kernel/bootstrap/proc.rb:20
I, [2014-01-16T14:06:44.711115 #14177] INFO -- : request 1
I, [2014-01-16T14:06:44.711376 #14177] INFO -- : request 2
I, [2014-01-16T14:06:44.711496 #14177] INFO -- : request 3
I, [2014-01-16T14:06:44.712097 #14177] INFO -- : request 4
I, [2014-01-16T14:06:45.079031 #14177] INFO -- : response 4
I, [2014-01-16T14:06:45.081359 #14177] INFO -- : request 5
I, [2014-01-16T14:06:45.257534 #14177] INFO -- : response 3
I, [2014-01-16T14:06:45.263070 #14177] INFO -- : request 6
E, [2014-01-16T14:06:45.376685 #14177] ERROR -- : Actor crashed!
ArgumentError: Data object has already been freed
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/response_parser.rb:12:in `<< (add)'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80:in `perform'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10:in `get'
karl.rb:11:in `fetch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:26:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:63:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:60:in `invoke'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:71:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/actor.rb:388:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks.rb:55:in `initialize'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks/task_fiber.rb:15:in `create'
kernel/bootstrap/proc.rb:20:in `call'
(celluloid):0:in `remote procedure call'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:92:in `value'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/proxies/sync_proxy.rb:33:in `method_missing'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/proxies/cell_proxy.rb:17:in `_send_'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/pool_manager.rb:41:in `_send_'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/pool_manager.rb:123:in `fetch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:26:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:63:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:60:in `invoke'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:0:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/actor.rb:0:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks.rb:55:in `initialize'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks/task_fiber.rb:15:in `create'
I, [2014-01-16T14:06:45.379458 #14177] INFO -- : request 8
I, [2014-01-16T14:06:45.429879 #14177] INFO -- : response 8
I, [2014-01-16T14:06:45.431047 #14177] INFO -- : request 7
I, [2014-01-16T14:06:45.505217 #14177] INFO -- : response 7
I, [2014-01-16T14:06:45.506790 #14177] INFO -- : request 9
E, [2014-01-16T14:06:45.527265 #14177] ERROR -- : Actor crashed!
ArgumentError: Data object has already been freed
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/response_parser.rb:12:in `<< (add)'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80:in `perform'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10:in `get'
karl.rb:11:in `fetch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:26:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:63:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:60:in `invoke'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:71:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/actor.rb:388:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks.rb:55:in `initialize'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks/task_fiber.rb:15:in `create'
kernel/bootstrap/proc.rb:20:in `call'
I, [2014-01-16T14:06:45.528479 #14177] INFO -- : response 6
I, [2014-01-16T14:06:45.529946 #14177] INFO -- : request 10
E, [2014-01-16T14:06:45.652792 #14177] ERROR -- : Actor crashed!
ArgumentError: Data object has already been freed
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/response_parser.rb:12:in `<< (add)'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80:in `perform'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50:in `request'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10:in `get'
karl.rb:11:in `fetch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:26:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/calls.rb:63:in `dispatch'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:60:in `invoke'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/cell.rb:71:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/actor.rb:388:in `task'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks.rb:55:in `initialize'
/home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks/task_fiber.rb:15:in `create'
kernel/bootstrap/proc.rb:20:in `call'
An exception occurred running karl.rb:
Data object has already been freed (ArgumentError)
Backtrace:
I, [2014-01-16T14:06:45.657232 #14177] INFO -- : response 10
 HTTP::Response::Parser#<< (add) at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http
/response_parser.rb:12
HTTP::Client#perform at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:80
HTTP::Client#request at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/client.rb:56
HTTP::Chainable(Module)#request at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:50
HTTP::Chainable(Module)#get at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/http-d806459155c8/lib/http/chainable.rb:10
HttpFetcher#fetch at karl.rb:11
Celluloid::Call(Celluloid::SyncCall)#dispatch at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/calls.rb:26
Celluloid::SyncCall#dispatch at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/calls.rb:63
{ } in Celluloid::Cell#invoke at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/cell.rb:60
{ } in Celluloid::Cell#task at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/cell.rb:71
{ } in Celluloid::Actor#task at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/actor.rb:388
{ } in Celluloid::Task(Celluloid::TaskFiber)#initialize at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid
/tasks.rb:55
{ } in Celluloid::TaskFiber#create at /home/myitcv/.rbenv/versions/rbx-2.2.3/gems/bundler/gems/celluloid-163132ea3dd4/lib/celluloid/tasks
/task_fiber.rb:15
 Proc#call at kernel/bootstrap/proc.rb:20
D, [2014-01-16T14:06:45.657649 #14177] DEBUG -- : Terminating 5 actors...
W, [2014-01-16T14:06:45.658174 #14177] WARN -- : Terminating task: type=:call, meta={:method_name=>:fetch}, status=:iowait
W, [2014-01-16T14:06:45.661539 #14177] WARN -- : Terminating task: type=:call, meta={:method_name=>:fetch}, status=:callwait
W, [2014-01-16T14:06:45.661773 #14177] WARN -- : Terminating task: type=:call, meta={:method_name=>:fetch}, status=:callwait
W, [2014-01-16T14:06:45.661933 #14177] WARN -- : Terminating task: type=:exit_handler, meta={:method_name=>:__crash_handler__}, status=:callwait
Puma 2.7.1 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:4567
== Sinatra/1.4.4 has taken the stage on 4567 for development with backup from Puma
#<Thread:0x007f79af89fbb8> - request #10#<Thread:0x007f79af0d1df0> - request #7
#<Thread:0x007f79af0d5338> - request #1
#<Thread:0x007f79af0dbcb0> - request #8
#<Thread:0x007f79af0dadd8> - request #6
#<Thread:0x007f79af0d03d8> - request #5
#<Thread:0x007f79af0d8b00> - request #4
#<Thread:0x007f79af0df720> - request #3
#<Thread:0x007f79af8ab648> - request #2
#<Thread:0x007f79af0de870> - request #9
#<Thread:0x007f79af0d03d8> - response #5 - after sleep of 0.016759354992248676
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=5 HTTP/1.1" 200 20 0.0190
#<Thread:0x007f79af0dbcb0> - response #8 - after sleep of 0.07040803670126605
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=8 HTTP/1.1" 200 19 0.0719
#<Thread:0x007f79af0d8b00> - response #4 - after sleep of 0.2285920949098963
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=4 HTTP/1.1" 200 18 0.2305
#<Thread:0x007f79af0d1df0> - response #7 - after sleep of 0.43867852519321127
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=7 HTTP/1.1" 200 19 0.4399
#<Thread:0x007f79af0de870> - response #9 - after sleep of 0.46860156237080286
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=9 HTTP/1.1" 200 19 0.4700
#<Thread:0x007f79af0df720> - response #3 - after sleep of 0.6374789792761095
127.0.0.1 - - [16/Jan/2014 15:04:13] "GET /hi?number=3 HTTP/1.1" 200 18 0.6394
#<Thread:0x007f79af0dadd8> - response #6 - after sleep of 1.0664807821013393
127.0.0.1 - - [16/Jan/2014 15:04:14] "GET /hi?number=6 HTTP/1.1" 200 18 1.0682
#<Thread:0x007f79af89fbb8> - response #10 - after sleep of 1.2285105766907554
127.0.0.1 - - [16/Jan/2014 15:04:14] "GET /hi?number=10 HTTP/1.1" 200 18 1.2320
#<Thread:0x007f79af0d5338> - response #1 - after sleep of 1.6922573727265418
127.0.0.1 - - [16/Jan/2014 15:04:14] "GET /hi?number=1 HTTP/1.1" 200 18 1.6934
#<Thread:0x007f79af8ab648> - response #2 - after sleep of 1.8731917767578579
127.0.0.1 - - [16/Jan/2014 15:04:15] "GET /hi?number=2 HTTP/1.1" 200 18 1.8749
== Sinatra has ended his set (crowd applauds)
require 'bundler/setup'
require 'http'
require 'celluloid/io'
class HttpFetcher
include Celluloid::IO
include Celluloid::Logger
def fetch(number)
info "request #{number}"
resp = HTTP.get("http://localhost:4567/hi?number=#{number}", socket_class: Celluloid::IO::TCPSocket, ssl_socket_class: Celluloid::IO::SSLSocket).response
info "response #{number}"
resp.body
end
end
fetcher = HttpFetcher.new
futures = (1..10).map { |i| fetcher.future.fetch(i) }
# join in a very naive way to all the requests
futures.each do |future|
future.value
end
exit!
require 'sinatra'
configure { set :server, :puma }
get '/hi' do
puts "#{Thread.current} - request ##{params[:number]}"
sleep_int = rand * 2
sleep sleep_int
puts "#{Thread.current} - response ##{params[:number]} - after sleep of #{sleep_int}"
"#{sleep_int}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment