I have found the root cause: need init the k_poll_signal before it was used in the k_poll_event array. k_poll_signal_init(&async_sig); struct k_poll_event async_evt = K_POLL_EVENT_INITIALIZER(K_POLL_TYPE_SIGNAL, K_POLL_MODE_NOTIFY_ONLY, &async_sig);
I ported these demo code from the surce file test_adc.c from the zephyr master branch, so there is a bug in that test file.