Skip to content

Instantly share code, notes, and snippets.

@Code-Hex
Last active April 28, 2020 14:58
Show Gist options
  • Select an option

  • Save Code-Hex/7adb844121cc1d773b8b4ebbcf28ff02 to your computer and use it in GitHub Desktop.

Select an option

Save Code-Hex/7adb844121cc1d773b8b4ebbcf28ff02 to your computer and use it in GitHub Desktop.
neovim 調査
  • UI_BRIDGE_CALL(b, stop, 1, b);ui_bridge_stop_event を呼ぶ in ui_bridge_stop
  • ui_bridge_attachui_bridge_stop をセットしてる
  • これらを呼び出す ui_call_stopos_exit の中で呼ばれてる
@Code-Hex
Copy link
Copy Markdown
Author

ctrl-z のときは kill(0, SIGSTOP) した所で止まる

47154/0x40737:      8865      42     37 write_nocancel(0xF, "DEBUG 2020-04-26T15:20:46.648 47154 suspend_event:1275: ~~ after tui_terminal_stop ~~\n\0", 0x56)		 = 86 0
47154/0x40737:      9028     162    159 close_nocancel(0xF)		 = 0 0
47154/0x40737:      9098      68     57 open_nocancel("/Users/codehex/.local/share/nvim/log\0", 0x209, 0x1B6)		 = 15 0
47154/0x40737:      9103       5      2 lseek(0xF, 0x0, 0x2)		 = 2016945 0
47154/0x40737:      9122       7      3 fstat64(0xF, 0x70000A28AF38, 0x0)		 = 0 0
47154/0x40737:      9162      39     35 write_nocancel(0xF, "DEBUG 2020-04-26T15:20:46.648 47154 suspend_event:1277: ~~ blocking ~~\n\0", 0x47)		 = 71 0
47154/0x40737:      9244      78     72 close_nocancel(0xF)		 = 0 0
47154/0x40737:      9263       7      2 kqueue(0x0, 0x0, 0x0)		 = 15 0
47154/0x40737:      9266       4      0 ioctl(0xF, 0x20006601, 0x0)		 = 0 0
47154/0x40737:      9285      13      8 pipe(0x0, 0x0, 0x0)		 = 24 0
47154/0x40737:      9292       4      0 ioctl(0x18, 0x20006601, 0x19)		 = 0 0
47154/0x40737:      9293       2      0 ioctl(0x19, 0x20006601, 0x0)		 = 0 0
47154/0x40737:      9296       2      1 ioctl(0x18, 0x8004667E, 0x70000A28AF8C)		 = 0 0
47154/0x40737:      9297       2      0 ioctl(0x19, 0x8004667E, 0x70000A28AF8C)		 = 0 0
47154/0x40737:      9306       6      4 pipe(0x0, 0x0, 0x0)		 = 26 0
47154/0x40737:      9308       2      0 ioctl(0x1A, 0x20006601, 0x1B)		 = 0 0
47154/0x40737:      9309       2      0 ioctl(0x1B, 0x20006601, 0x0)		 = 0 0
47154/0x40737:      9311       3      0 ioctl(0x1A, 0x8004667E, 0x70000A28AF7C)		 = 0 0
47154/0x40737:      9320       6      1 ioctl(0x1B, 0x8004667E, 0x70000A28AF7C)		 = 0 0
47154/0x40737:      9354      35     31 open("/dev/null\0", 0x1000000, 0x7)		 = 28 0
47154/0x40737:      9361       7      3 fcntl(0x0, 0x3, 0x0)		 = 6 0
47154/0x40737:      9372       8      3 ioctl(0x0, 0x8004667E, 0x70000A28AFEC)		 = 0 0
47154/0x40737:      9377       4      1 kqueue(0x0, 0x0, 0x0)		 = 29 0
47154/0x40737:      9382       5      3 kevent(0x1D, 0x70000A28AFB0, 0x1)		 = 0 0
47154/0x40737:      9392       8      4 close_nocancel(0x1D)		 = 0 0
47154/0x40737:      9396       5      0 setsockopt(0x0, 0xFFFF, 0x100)		 = -1 Err#38
47154/0x40737:      9400       4      2 ioctl(0x0, 0x8004667E, 0x70000A28B01C)		 = 0 0
47154/0x40737:      9407       6      3 kevent(0xF, 0x70000A282F80, 0x2)		 = 0 0
47154/0x40737:      9413       7      3 close_nocancel(0x18)		 = 0 0
47154/0x40737:      9416       5      1 close_nocancel(0x19)		 = 0 0
47154/0x40737:      9419       5      1 close_nocancel(0x1B)		 = 0 0
47154/0x40737:      9423       5      2 close_nocancel(0x1A)		 = 0 0
47154/0x40737:      9449      28     25 close_nocancel(0x1C)		 = 0 0
47154/0x40737:      9459       6      2 close_nocancel(0xF)		 = 0 0
47154/0x40737:      9524      57     53 open_nocancel("/Users/codehex/.local/share/nvim/log\0", 0x209, 0x1B6)		 = 15 0
47154/0x40737:      9545       7      3 lseek(0xF, 0x0, 0x2)		 = 2017016 0
47154/0x40737:      9571       6      3 fstat64(0xF, 0x70000A28AF38, 0x0)		 = 0 0
47154/0x40737:      9627      49     44 write_nocancel(0xF, "DEBUG 2020-04-26T15:20:46.649 47154 suspend_event:1280: ~~ finished blocking ~~\n\0", 0x50)		 = 80 0
47154/0x40737:      9713      81     77 close_nocancel(0xF)		 = 0 0
47154/0x40737:      9781      60     55 open_nocancel("/Users/codehex/.local/share/nvim/log\0", 0x209, 0x1B6)		 = 15 0
47154/0x40737:      9789       6      2 lseek(0xF, 0x0, 0x2)		 = 2017096 0
47154/0x40737:      9810       4      2 fstat64(0xF, 0x70000A28AF38, 0x0)		 = 0 0
47154/0x40737:      9855      42     38 write_nocancel(0xF, "DEBUG 2020-04-26T15:20:46.650 47154 suspend_event:1282: ~~ stopped another signals ~~\n\0", 0x56)		 = 86 0
47154/0x40737:      9912      54     50 close_nocancel(0xF)		 = 0 0
47154/0x40737:      9985      16     12 kill(0, 18)		 = 0 0

@Code-Hex
Copy link
Copy Markdown
Author

ctrl-d した後に fg (continue)

47383/0x40ff5:     57365 82319975      7 psynch_cvwait(0x7F9C22408F70, 0x10100000200, 0x100)		 = -1 Err#260
47383/0x40ff5:     57380      99      3 read(0x4, "*\t\0", 0x1)		 = 1 0
47383/0x40ff5:     57386       8      4 write(0x14, "`J\200\006\0", 0x10)		 = 16 0
47383/0x40ff6:      9712     165     70 open_nocancel("/Users/codehex/.local/share/nvim/log\0", 0x209, 0x1B6)		 = 15 0
47383/0x40ff5:     57389       4      1 write(0x5, "*\0", 0x1)		 = 1 0
47383/0x40ff5:     57393       6      2 sigreturn(0x7FFEE94AA6B0, 0x1E, 0x855F551B660F219)		 = 0 Err#-2
47383/0x40ff6:      9722      82      3 lseek(0xF, 0x0, 0x2)		 = 2021272 0
47383/0x40ff6:      9767      72      5 fstat64(0xF, 0x70000D521F38, 0x0)		 = 0 0
47383/0x40ff6:      9837      62     57 write_nocancel(0xF, "DEBUG 2020-04-26T15:24:48.459 47383 suspend_event:1284: ~~ sent sigstop ~~\n\0", 0x4B)		 = 75 0
47383/0x40ff6:      9943     112    103 close_nocancel(0xF)		 = 0 0
47383/0x40ff6:      9960       7      1 __pthread_sigmask(0x3, 0x70000D5224B0, 0x70000D522550)		 = 0 0

@Code-Hex
Copy link
Copy Markdown
Author

ctrl-d なしで fg (continue)

47505/0x425ae:     55816 2079641      8 psynch_cvwait(0x7FDA8FE04AA0, 0x10100000200, 0x100)		 = -1 Err#260
47505/0x425b4:     13102     154     73 open_nocancel("/Users/codehex/.local/share/nvim/log\0", 0x209, 0x1B6)		 = 15 0
47505/0x425ae:     55835      87      6 read(0x4, "*\0", 0x1)		 = 1 0
47505/0x425b4:     13106       5      1 lseek(0xF, 0x0, 0x2)		 = 2030548 0
47505/0x425b4:     13141       7      3 fstat64(0xF, 0x700000810F38, 0x0)		 = 0 0
47505/0x425ae:     55850      87      7 write(0x14, "`\232\005\b\0", 0x10)		 = 16 0
47505/0x425ae:     55854       6      3 write(0x5, "*\0", 0x1)		 = 1 0
47505/0x425b4:     13210      58     53 write_nocancel(0xF, "DEBUG 2020-04-26T15:30:53.322 47505 suspend_event:1284: ~~ sent sigstop ~~\n\0", 0x4B)		 = 75 0
47505/0x425ae:     55862       7      2 sigreturn(0x7FFEE7C556B0, 0x1E, 0x98ED0862DFBA2AD7)		 = 0 Err#-2
47505/0x425b4:     13290      79     75 close_nocancel(0xF)		 = 0 0
47505/0x425b4:     13305       7      1 __pthread_sigmask(0x3, 0x7000008114B0, 0x700000811550)		 = 0 0

@Code-Hex
Copy link
Copy Markdown
Author

tui 上のコードに関する設計思想が説明されてる PR
neovim/neovim#3246

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment