deivid-rodriguez/byebug

C-extension locks the GVL, causing timeouts

nateberkopec opened this issue · 0 comments

Puma users frequently experience problems with Byebug which are solved by increasing puma's worker timeout. The worker timeout is intended to kill Puma workers which do not periodically send the master process a heartbeat reply.

The problem is:

  1. The heartbeat is implemented in Ruby
  2. Byebug's c-extension is not GVL-aware
  3. The heartbeat never gets sent, so Puma kills the worker, thus killing the debug session.

Workaround is here: rails/rails#40503