# Base.register\_taskdone\_hook crashes julia

**URL:** <https://discourse.julialang.org/t/base-register-taskdone-hook-crashes-julia/11196>\
**Category:** General Usage\
**Created:** [May 28, 2018, 8:19am UTC](https://discourse.julialang.org/t/base-register-taskdone-hook-crashes-julia/11196 "2018-05-28T08:19:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![tk3369](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tk3369/32/2824_2.png) [@tk3369](https://discourse.julialang.org/u/tk3369)\
**Post date:** [May 28, 2018, 8:19am UTC](https://discourse.julialang.org/t/base-register-taskdone-hook-crashes-julia/11196/1 "2018-05-28T08:19:47Z")

</div>

Am I using it correctly? This simple hook crashes julia in both 0.6 and 0.7.

```julia
julia> slow(n) = (sleep(n); rand())
slow (generic function with 1 method)

julia> t = @async slow(15)
Task (runnable) @0x0000000112d3bcd0

julia> Base.register_taskdone_hook(t, (tsk) -> println("good"))
Task (runnable) @0x0000000112d3bcd0

julia> goodfatal: error thrown and no exception handler available.
ErrorException("schedule: Task not runnable")
rec_backtrace at /Users/osx/buildbot/slave/package_osx64/build/src/stackwalk.c:84
record_backtrace at /Users/osx/buildbot/slave/package_osx64/build/src/task.c:245 [inlined]
jl_throw at /Users/osx/buildbot/slave/package_osx64/build/src/task.c:564
enq_work at ./event.jl:82
uv_writecb_task at ./stream.jl:884
jlcapi_uv_writecb_task_23794 at /Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
uv__write_callbacks at /Users/osx/buildbot/slave/package_osx64/build/deps/srccache/libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d/src/unix/stream.c:967
uv__stream_io at /Users/osx/buildbot/slave/package_osx64/build/deps/srccache/libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d/src/unix/stream.c:1317
uv__run_pending at /Users/osx/buildbot/slave/package_osx64/build/deps/srccache/libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d/src/unix/core.c:765
uv_run at /Users/osx/buildbot/slave/package_osx64/build/deps/srccache/libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d/src/unix/core.c:346
process_events at ./libuv.jl:82 [inlined]
wait at ./event.jl:216
uv_write at ./stream.jl:811
unsafe_write at ./stream.jl:832
print at ./strings/io.jl:122
jlcall_print_21039 at /Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
print at ./strings/io.jl:40
#5 at ./REPL[3]:1
unknown function (ip: 0x1200bf042)
foreach at ./abstractarray.jl:1733
unknown function (ip: 0x1200beef6)
task_done_hook at ./task.jl:217
jlcall_task_done_hook_21957 at /Applications/Julia-0.6.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
jl_apply at /Users/osx/buildbot/slave/package_osx64/build/src/./julia.h:1424 [inlined]
finish_task at /Users/osx/buildbot/slave/package_osx64/build/src/task.c:232
start_task at /Users/osx/buildbot/slave/package_osx64/build/src/task.c:275

```

---

<div class="post-metadata">

**Author:** ![tk3369](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tk3369/32/2824_2.png) [@tk3369](https://discourse.julialang.org/u/tk3369)\
**Post date:** [May 28, 2018, 8:29am UTC](https://discourse.julialang.org/t/base-register-taskdone-hook-crashes-julia/11196/2 "2018-05-28T08:29:04Z")

</div>

Looks like the `println` statement crashes it. If I do other things then it’s fine. Still, I would rather not see it crash 🙂

A working example:

```julia
julia> cnt = 1
1

julia> slow(n) = (sleep(n); rand())
slow (generic function with 1 method)

julia> t = @async slow(15)
Task (runnable) @0x000000010ef37cd0

julia> Base.register_taskdone_hook(t, (tsk) -> (global cnt; cnt += 1))
Task (runnable) @0x000000010ef37cd0

julia> cnt
1

julia> cnt
2

```
