EXC_BAD_ACCESS (camlLuv__Helpers__set_reference_inner_1334 + 40)
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- c, ocaml
- 領域
- networking
調査の方向性
helpers.c の luv_async_trampoline から開始し、バックトレースをたどって camlLuv__Helpers__set_reference_inner_1334 と camlLuv__Stream__read_start_inner_3000 を調査します。スレッド 4 の EXC_BAD_ACCESS を調査し、周辺の luv と libuv のエントリポイントを使って再現可能な障害を確立します。クラッシュの原因が特定され、リグレッションチェックでカバーされれば完了です。
索引モデルが issue の本文から書いたものです。
説明
(lldb) bt all
thread #1, queue = 'com.apple.main-thread'
frame #0: 0x0000000180a48a74 libsystem_kernel.dylib`__select + 8
frame #1: 0x00000001013624d0 com.docker.vpnkit`unix_select(readfds=<unavailable>, writefds=<unavailable>, exceptfds=<unavailable>, timeout=<unavailable>) at select.c:94:15 [opt]
frame #2: 0x000000010138c4f8 com.docker.vpnkit`caml_c_call + 28
frame #3: 0x0000000100ccc890 com.docker.vpnkit`camlLwt_engine__fun_2758 + 32
frame #4: 0x0000000100ccc39c com.docker.vpnkit`camlLwt_engine__fun_2681 + 284
frame #5: 0x0000000100cced8c com.docker.vpnkit`camlLwt_main__run_loop_436 + 156
frame #6: 0x0000000100ccf014 com.docker.vpnkit`camlLwt_main__run_494 + 268
frame #7: 0x0000000100c3ceec com.docker.vpnkit`camlLuv_lwt__run_2432 + 92
frame #8: 0x0000000100c1ec4c com.docker.vpnkit`camlDune__exe__Main__main_5289 + 1180
frame #9: 0x00000001012c0bb0 com.docker.vpnkit`camlCmdliner_term__fun_452 + 112
frame #10: 0x00000001012c3d9c com.docker.vpnkit`camlCmdliner__run_745 + 44
frame #11: 0x00000001012c40c4 com.docker.vpnkit`camlCmdliner__term_eval_797 + 276
frame #12: 0x00000001012c48f4 com.docker.vpnkit`camlCmdliner__eval_1333 + 284
frame #13: 0x0000000100c2098c com.docker.vpnkit`camlDune__exe__Main__entry + 6532
frame #14: 0x0000000100c118d4 com.docker.vpnkit`caml_program + 15996
frame #15: 0x000000010138c568 com.docker.vpnkit`caml_start_program + 104
frame #16: 0x0000000101366704 com.docker.vpnkit`caml_startup_common(argv=0x0000000100ccc890, pooling=<unavailable>) at startup_nat.c:160:9 [opt]
frame #17: 0x0000000101366778 com.docker.vpnkit`caml_main [inlined] caml_startup_exn(argv=<unavailable>) at startup_nat.c:167:10 [opt]
frame #18: 0x0000000101366770 com.docker.vpnkit`caml_main [inlined] caml_startup(argv=<unavailable>) at startup_nat.c:172:15 [opt]
frame #19: 0x0000000101366770 com.docker.vpnkit`caml_main(argv=<unavailable>) at startup_nat.c:179:3 [opt]
frame #20: 0x00000001013667d8 com.docker.vpnkit`main(argc=<unavailable>, argv=<unavailable>) at main.c:37:3 [opt]
frame #21: 0x0000000180757e38 dyld`start + 2520
thread #2
frame #0: 0x0000000180a415e4 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180a7d638 libsystem_pthread.dylib`_pthread_cond_wait + 1232
frame #2: 0x0000000101358fe0 com.docker.vpnkit`caml_condition_wait [inlined] st_condvar_wait(c=0x000060000054c270, m=0x0000600001e4c280) at st_posix.h:290:10 [opt]
frame #3: 0x0000000101358fd4 com.docker.vpnkit`caml_condition_wait(wcond=<unavailable>, wmut=<unavailable>) at st_stubs.c:884:15 [opt]
frame #4: 0x000000010138c4f8 com.docker.vpnkit`caml_c_call + 28
frame #5: 0x0000000100c20d0c com.docker.vpnkit`camlDune__exe__Logging__next_1306 + 116
frame #6: 0x0000000100c20b08 com.docker.vpnkit`camlDune__exe__Logging__with_lock_1175 + 64
frame #7: 0x0000000100c20e98 com.docker.vpnkit`camlDune__exe__Logging__loop_1313 + 48
frame #8: 0x0000000100cf61f4 com.docker.vpnkit`camlThread__fun_850 + 44
frame #9: 0x000000010138c568 com.docker.vpnkit`caml_start_program + 104
frame #10: 0x0000000101380e70 com.docker.vpnkit`caml_callback_exn(closure=<unavailable>, arg=1) at callback.c:111:10 [opt]
frame #11: 0x00000001013584b8 com.docker.vpnkit`caml_thread_start(arg=<unavailable>) at st_stubs.c:548:5 [opt]
frame #12: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
thread #3
frame #0: 0x0000000180a48a74 libsystem_kernel.dylib`__select + 8
frame #1: 0x000000010135852c com.docker.vpnkit`caml_thread_tick(arg=<unavailable>) at st_posix.h:388:5 [opt]
frame #2: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
* thread #4, stop reason = EXC_BAD_ACCESS (code=1, address=0x4f83f8b48148)
* frame #0: 0x0000000100cdb8c8 com.docker.vpnkit`camlLuv__Helpers__set_reference_inner_1334 + 40
frame #1: 0x0000000100ce58c8 com.docker.vpnkit`camlLuv__Stream__read_start_inner_3000 + 192
frame #2: 0x00000001012ec708 com.docker.vpnkit`camlStdlib__Queue__iter_329 + 72
frame #3: 0x0000000100cdb370 com.docker.vpnkit`camlLuv__Error__catch_exceptions_1447 + 56
frame #4: 0x000000010138c568 com.docker.vpnkit`caml_start_program + 104
frame #5: 0x0000000101381118 com.docker.vpnkit`caml_callback [inlined] caml_callback_exn(closure=<unavailable>, arg=1) at callback.c:111:10 [opt]
frame #6: 0x0000000101381100 com.docker.vpnkit`caml_callback(closure=<unavailable>, arg=1) at callback.c:165:34 [opt]
frame #7: 0x0000000101340ab0 com.docker.vpnkit`luv_async_trampoline(c_handle=<unavailable>) at helpers.c:64:5 [opt]
frame #8: 0x0000000101346aa8 com.docker.vpnkit`uv__async_io(loop=0x0000000101bdd640, w=<unavailable>, events=<unavailable>) at async.c:163:5 [opt]
frame #9: 0x0000000101356bf8 com.docker.vpnkit`uv__io_poll(loop=0x0000000101bdd640, timeout=164) at kqueue.c:0 [opt]
frame #10: 0x0000000101346ed4 com.docker.vpnkit`uv_run(loop=0x0000000101bdd640, mode=UV_RUN_DEFAULT) at core.c:389:5 [opt]
frame #11: 0x000000010133cde4 com.docker.vpnkit`luv_stub_blocking_1_uv_run(x1377=<unavailable>, x1376=<unavailable>) at c_generated_functions.c:1800:18 [opt]
frame #12: 0x000000010138c4f8 com.docker.vpnkit`caml_c_call + 28
frame #13: 0x0000000100cf5eac com.docker.vpnkit`camlLuv_c_generated_functions__fun_6620 + 52
frame #14: 0x0000000100c3cfa4 com.docker.vpnkit`camlLuv_lwt__fun_2872 + 28
frame #15: 0x0000000100cf61f4 com.docker.vpnkit`camlThread__fun_850 + 44
frame #16: 0x000000010138c568 com.docker.vpnkit`caml_start_program + 104
frame #17: 0x0000000101380e70 com.docker.vpnkit`caml_callback_exn(closure=<unavailable>, arg=1) at callback.c:111:10 [opt]
frame #18: 0x00000001013584b8 com.docker.vpnkit`caml_thread_start(arg=<unavailable>) at st_stubs.c:548:5 [opt]
frame #19: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
thread #5
frame #0: 0x0000000180a415e4 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180a7d638 libsystem_pthread.dylib`_pthread_cond_wait + 1232
frame #2: 0x0000000101352218 com.docker.vpnkit`uv_cond_wait(cond=<unavailable>, mutex=<unavailable>) at thread.c:780:7 [opt]
frame #3: 0x0000000101343720 com.docker.vpnkit`worker(arg=0x0000000000000000) at threadpool.c:76:7 [opt]
frame #4: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
thread #6
frame #0: 0x0000000180a415e4 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180a7d638 libsystem_pthread.dylib`_pthread_cond_wait + 1232
frame #2: 0x0000000101352218 com.docker.vpnkit`uv_cond_wait(cond=<unavailable>, mutex=<unavailable>) at thread.c:780:7 [opt]
frame #3: 0x0000000101343720 com.docker.vpnkit`worker(arg=0x0000000000000000) at threadpool.c:76:7 [opt]
frame #4: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
thread #7
frame #0: 0x0000000180a415e4 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180a7d638 libsystem_pthread.dylib`_pthread_cond_wait + 1232
frame #2: 0x0000000101352218 com.docker.vpnkit`uv_cond_wait(cond=<unavailable>, mutex=<unavailable>) at thread.c:780:7 [opt]
frame #3: 0x0000000101343720 com.docker.vpnkit`worker(arg=0x0000000000000000) at threadpool.c:76:7 [opt]
frame #4: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
thread #8
frame #0: 0x0000000180a415e4 libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180a7d638 libsystem_pthread.dylib`_pthread_cond_wait + 1232
frame #2: 0x0000000101352218 com.docker.vpnkit`uv_cond_wait(cond=<unavailable>, mutex=<unavailable>) at thread.c:780:7 [opt]
frame #3: 0x0000000101343720 com.docker.vpnkit`worker(arg=0x0000000000000000) at threadpool.c:76:7 [opt]
frame #4: 0x0000000180a7d06c libsystem_pthread.dylib`_pthread_start + 148
- 主要言語
- OCaml
- スター
- 1.2k
- フォーク
- 214
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
moby/vpnkit のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
smol-machines/smolvm#1489 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
-
HttpClient
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
btclib-org/btclib-node#1466 ·
メンテナーはふだん 1 日以内に返信
-
unassigned
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信