diff --git a/src/threadpool.c b/src/threadpool.c index 9d13120fdd3799c58f831cdb98c72c1b931672a0..6900aac5e7aaf22da60f058ac74f24cb440e3246 100644 --- a/src/threadpool.c +++ b/src/threadpool.c @@ -666,8 +666,10 @@ int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb, uv_after_work_cb after_work_cb) { - if (work_cb == NULL) + if (work_cb == NULL) { + UV_LOGF("work_cb is NULL, loop is %{public}zu, req is %{public}zu", (size_t)loop, (size_t)req); return UV_EINVAL; + } #ifdef USE_FFRT req->reserved[1] = NULL; #endif diff --git a/src/unix/core.c b/src/unix/core.c index 1a2eb5a3172089d1f08dd2e03c1fa0cdae9ed11b..203d7c2a82809f4d0f3af5184cb6614b5cc08460 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -436,6 +436,7 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { #ifdef USE_FFRT if (!is_uv_loop_good_magic(loop)) { + UV_LOGF("loop %{public}zu is invalid", (size_t)loop); return 0; } #endif @@ -444,23 +445,29 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { if (!r) uv__update_time(loop); + UV_LOGI("start to run loop %{public}zu", (size_t)loop); + while (r != 0 && loop->stop_flag == 0) { #ifdef USE_FFRT if (!is_uv_loop_good_magic(loop)) { + UV_LOGF("loop %{public}zu is invalid", (size_t)loop); return 0; } #endif - + UV_LOGI("start to handle timer tasks, loop %{public}zu", (size_t)loop); uv__update_time(loop); uv__run_timers(loop); + UV_LOGI("handle timer tasks finished, loop %{public}zu", (size_t)loop); can_sleep = uv__queue_empty(&loop->pending_queue) && uv__queue_empty(&loop->idle_handles); + UV_LOGI("start to handle pending&idle&prepare tasks, loop %{public}zu", (size_t)loop); uv__run_pending(loop); uv__run_idle(loop); uv__run_prepare(loop); + UV_LOGI("handle pending&idle&prepare tasks finished, loop %{public}zu", (size_t)loop); timeout = 0; if ((mode == UV_RUN_ONCE && can_sleep) || mode == UV_RUN_DEFAULT) @@ -468,7 +475,9 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { uv__metrics_inc_loop_count(loop); + UV_LOGI("start to handle poll io tasks, loop %{public}zu", (size_t)loop); uv__io_poll(loop, timeout); + UV_LOGI("handle poll io tasks finished, loop %{public}zu", (size_t)loop); /* Process immediate callbacks (e.g. write_cb) a small fixed number of * times to avoid loop starvation.*/ @@ -481,9 +490,10 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { * the timeout == 0) or was already updated b/c an event was received. */ uv__metrics_update_idle_time(loop); - uv__run_check(loop); + UV_LOGI("start to handle closing handle tasks, loop %{public}zu", (size_t)loop); uv__run_closing_handles(loop); + UV_LOGI("handle closing handle tasks finished, loop %{public}zu", (size_t)loop); if (mode == UV_RUN_ONCE) { /* UV_RUN_ONCE implies forward progress: at least one callback must have @@ -495,7 +505,9 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { * the check. */ uv__update_time(loop); + UV_LOGI("start to handle timer tasks for run once, loop %{public}zu", (size_t)loop); uv__run_timers(loop); + UV_LOGI("handle timer tasks for run once finished, loop %{public}zu", (size_t)loop); } r = uv__loop_alive(loop); @@ -509,6 +521,7 @@ int uv_run(uv_loop_t* loop, uv_run_mode mode) { if (loop->stop_flag != 0) loop->stop_flag = 0; + UV_LOGI("loop %{public}zu stopped", (size_t)loop); return r; }