Fix shutdown deadlock (#9724)

Fix shutdown deadlock in poller

The issue was that iree_task_poller_pump_until_exit only checked
for IREE_TASK_POLLER_STATE_EXITING at the beginning of each loop
iteration, then reset wake_event, then called
iree_task_poller_commit_wait.

Meanwhile, on the main thread, iree_task_poller_request_exit could
change state to IREE_TASK_POLLER_STATE_EXITING and set wake_event.

So in a race, iree_task_poller_pump_until_exit would reset the
wake_event set by iree_task_poller_request_exit, and that would leave
iree_task_poller_commit_wait waiting infinitely.

Fixes #9723
diff --git a/runtime/src/iree/task/poller.c b/runtime/src/iree/task/poller.c
index ee6465b..12a38d9 100644
--- a/runtime/src/iree/task/poller.c
+++ b/runtime/src/iree/task/poller.c
@@ -418,6 +418,12 @@
 // wait handles were resolved.
 static void iree_task_poller_commit_wait(iree_task_poller_t* poller,
                                          iree_time_t deadline_ns) {
+  if (iree_atomic_load_int32(&poller->state, iree_memory_order_seq_cst) ==
+      IREE_TASK_POLLER_STATE_EXITING) {
+    // Thread exit requested - don't block shutdown.
+    return;
+  }
+
   IREE_TRACE_ZONE_BEGIN(z0);
 
   // Enter the system wait API.