gc-stacks: skip the NULL root task of an exited adopted thread (#63630)
When an adopted thread exits, `jl_delete_thread` clears its `root_task`
but leaves its ptls in `jl_all_tls_states`. `jl_get_all_tasks_arraylist`
and `jl_live_tasks` dereferenced `root_task` unconditionally, so the
wall-time profiler (and `jl_live_tasks`) segfaulted in any process that
had previously adopted a thread that later exited. GC marking and the
task backtrace printer already handle the NULL case.