moby / moby/vpnkit

EXC_BAD_ACCESS (camlLuv__Helpers__set_reference_inner_1334 + 40)

Open
#604 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
OCaml
Stars
1.2k
Forks
214
PR merge metrics
No merged PRs in 30d

Description

(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


Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with helpers.c at luv_async_trampoline and trace into camlLuv__Helpers__set_reference_inner_1334 and camlLuv__Stream__read_start_inner_3000 in the backtrace. Investigate the EXC_BAD_ACCESS on thread 4 and use the surrounding luv and libuv entry points to establish a reproducible failure. Done means the crash cause is identified and a regression check covers it.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, ocaml
Domain
networking
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.