Skip to content

Getting a stack level too deep error #1

@travisbell

Description

@travisbell

Hey Samuel,

I was hoping to add this into my development environment but it seems that is it not compatible when used with Sinatra::Extension.

 8.25s    error: Async::Container::Forked::Child [ec=0x7c0] [pid=13231] [2025-10-28 09:50:04 -0600]
               | stack level too deep
               |   SystemStackError: stack level too deep
               |   → /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:92 in 'Sinatra::Extension::DontCall#method_missing'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:92 in 'Sinatra::Extension::DontCall#method_missing'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:92 in 'Sinatra::Extension::DontCall#method_missing'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:92 in 'Sinatra::Extension::DontCall#method_missing'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:92 in 'Sinatra::Extension::DontCall#method_missing'
               ....many more....
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-safe-0.4.1/lib/async/safe/monitor.rb:155 in 'Async::Safe::Monitor#check_access'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:91 in 'Sinatra::Extension::DontCall#initialize'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:87 in 'Class#new'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.2.1/lib/sinatra/extension.rb:87 in 'Sinatra::Extension#method_missing'
               |     lib/controllers/test.rb:9 in '<module:Test>'
               |     lib/controllers/test.rb:6 in '<module:Controllers>'
               |     lib/controllers/test.rb:5 in '<top (required)>'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/3.4.0/bundled_gems.rb:82 in 'Kernel.require'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/3.4.0/bundled_gems.rb:82 in 'block (2 levels) in Kernel#replace_require'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:26 in 'Kernel#require'
               |     app.rb:29 in '<class:App>'
               |     app.rb:3 in '<top (required)>'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/3.4.0/bundled_gems.rb:82 in 'Kernel.require'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/3.4.0/bundled_gems.rb:82 in 'block (2 levels) in Kernel#replace_require'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:26 in 'Kernel#require'
               |     config.ru:10 in 'block (3 levels) in <top (required)>'
               |     lib/middleware/request_logger.rb:17 in 'Middleware::RequestLogger#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/protocol-rack-0.16.0/lib/protocol/rack/adapter/generic.rb:146 in 'Protocol::Rack::Adapter::Generic#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/protocol-http-0.55.0/lib/protocol/http/middleware.rb:53 in 'Protocol::HTTP::Middleware#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/protocol-http-0.55.0/lib/protocol/http/content_encoding.rb:40 in 'Protocol::HTTP::ContentEncoding#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/protocol-http-0.55.0/lib/protocol/http/middleware.rb:53 in 'Protocol::HTTP::Middleware#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/falcon-0.52.4/lib/falcon/server.rb:66 in 'Falcon::Server#call'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-http-0.92.1/lib/async/http/server.rb:57 in 'block in Async::HTTP::Server#accept'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-http-0.92.1/lib/async/http/protocol/http1/server.rb:72 in 'Async::HTTP::Protocol::HTTP1::Server#each'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-http-0.92.1/lib/async/http/server.rb:49 in 'Async::HTTP::Server#accept'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/falcon-0.52.4/lib/falcon/server.rb:57 in 'Falcon::Server#accept'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/io-endpoint-0.15.2/lib/io/endpoint/wrapper.rb:216 in 'block (2 levels) in IO::Endpoint::Wrapper#accept'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-2.34.0/lib/async/task.rb:207 in 'block in Async::Task#run'
               |     /Users/travisbell/.rbenv/versions/3.4.5/lib/ruby/gems/3.4.0/gems/async-2.34.0/lib/async/task.rb:452 in 'block in Async::Task#schedule'

I'm trying to enable it here, as an example, with Async::Safe.enable!. You can clone this repo down and run it, to see it first hand.

If you comment out those lines, start the app and then go to http://localhost:8080/ you'll see it crash.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions