guard / listen

The Listen gem listens to file modifications and notifies you about the changes.
https://rubygems.org/gems/listen
MIT License
1.92k stars 246 forks source link

segfault #474

Closed jjb closed 4 years ago

jjb commented 4 years ago

ruby 2.7.0 macos 10.14 and 10.15

When starting my rails project I experience this crash. I haven't been able to narrow it down to anything.

[3718] - Worker 0 (pid: 3754) booted, phase: 0
source=rack-timeout id=bc8cd9d8-b896-4de7-97b4-49ce7731ce05 timeout=15000ms state=ready
Started HEAD "/" for 127.0.0.1 at 2020-04-24 00:04:43 -0400
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record/entry.rb:53: [BUG] Segmentation fault at 0x0000000000000110
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]

the file where the seg fault happens isn't always the same, but it is always in listen

https://dsc.cloud/jjb/ruby_2020-04-23-221240_Johns-Laptop.crash

https://dsc.cloud/jjb/fsevent_watch_2020-04-23-220657_Johns-Laptop.crash

more info below. i'm excluding "c level backtrace information" and "Other runtime information", let me know if you want it.

-- Control frame information -----------------------------------------------
c:0014 p:---- s:0071 e:000070 CFUNC  :join
c:0013 p:0029 s:0064 e:000063 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record/entry.rb:38
c:0012 p:0015 s:0060 e:000058 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record/entry.rb:24
c:0011 p:0013 s:0054 e:000050 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:113
c:0010 p:0024 s:0046 e:000045 RESCUE /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:107
c:0009 p:0034 s:0042 e:000041 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:100
c:0008 p:0069 s:0034 e:000033 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:68
c:0007 p:0007 s:0028 e:000027 BLOCK  /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:76
c:0006 p:0017 s:0025 e:000024 METHOD /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:103
c:0005 p:0007 s:0018 e:000017 BLOCK  /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:76 [FINISH]
c:0004 p:---- s:0014 e:000013 CFUNC  :each
c:0003 p:0009 s:0010 e:000009 BLOCK  /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:75
c:0002 p:0006 s:0006 e:000005 BLOCK  /Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/internals/thread_pool.rb:6 [FINISH]
c:0001 p:---- s:0003 e:000002 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/internals/thread_pool.rb:6:in `block in add'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:75:in `block in start'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:75:in `each'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:76:in `block (2 levels) in start'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:103:in `_timed'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/adapter/base.rb:76:in `block (3 levels) in start'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:68:in `build'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:100:in `_fast_build_dir'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:107:in `rescue in _fast_build_dir'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:113:in `_fast_try_file'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:80:in `_fast_update_file'
/Users/john/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/listen-3.2.1/lib/listen/record.rb:80:in `mode'

-- Machine register context ------------------------------------------------
 rax: 0x0000000000000100 rbx: 0x00007ffe44b39c90 rcx: 0x00007fff8edc70c0
 rdx: 0x0000000000000000 rdi: 0x00007fff8edc70c0 rsi: 0x00007ffe44b39c90
 rbp: 0x00007000030eb100 rsp: 0x00007000030eb100  r8: 0x0000000000000000
  r9: 0x00007ffe44b39c90 r10: 0x007fffffffffffff r11: 0x0000004000000000
 r12: 0x00007000030eb210 r13: 0x0000002000000000 r14: 0x00007000030eb1b0
 r15: 0x0000000000000000 rip: 0x00007fff6826a5dd rfl: 0x0000000000010206
jjb commented 4 years ago

Did some more debugging and no longer think this is from listen - the stack trace just so happens to land there sometimes.

nickbullock commented 1 year ago

hey @jjb, what was your issue in the end? I'm facing the same log right now.

jjb commented 1 year ago

@nickbullock

I wish I knew/remembered! Hasn't happened in a long time. I'm on a newer ruby version now. Compiling on MacOS ARM may have been part of the problem.

parayab commented 1 year ago

@nickbullock

This worked for me