From d7d81a92aa8179d3bb2c656ac6a027c1058611af Mon Sep 17 00:00:00 2001 From: Randy Stauner Date: Tue, 29 Jul 2025 10:04:36 -0700 Subject: [PATCH 1/2] Track the pid on the rb event queue --- src/ruby/ext/grpc/rb_event_thread.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ruby/ext/grpc/rb_event_thread.c b/src/ruby/ext/grpc/rb_event_thread.c index 014dd2dcd8882..2226012ed11d6 100644 --- a/src/ruby/ext/grpc/rb_event_thread.c +++ b/src/ruby/ext/grpc/rb_event_thread.c @@ -36,6 +36,7 @@ typedef struct grpc_rb_event { void* argument; struct grpc_rb_event* next; + pid_t pid; } grpc_rb_event; typedef struct grpc_rb_event_queue { @@ -57,6 +58,7 @@ void grpc_rb_event_queue_enqueue(void (*callback)(void*), void* argument) { grpc_rb_event* event = gpr_malloc(sizeof(grpc_rb_event)); event->callback = callback; event->argument = argument; + event->pid = getpid(); event->next = NULL; gpr_mu_lock(&event_queue.mu); if (event_queue.tail == NULL) { @@ -81,6 +83,9 @@ static grpc_rb_event* grpc_rb_event_queue_dequeue() { event_queue.head = event_queue.head->next; } } + if (event != NULL && event->pid != getpid()) { + fprintf(stderr, "DEQUEUED EVENT PID %d != CURRENT PID %d\n", event->pid, getpid()); + } return event; } From 8e3fc62f6126dc789e3186f9938cbab921bba949 Mon Sep 17 00:00:00 2001 From: rwstauner <142719+rwstauner@users.noreply.github.com> Date: Wed, 30 Jul 2025 01:09:40 +0000 Subject: [PATCH 2/2] Automated change: Fix sanity tests --- src/ruby/ext/grpc/rb_event_thread.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ruby/ext/grpc/rb_event_thread.c b/src/ruby/ext/grpc/rb_event_thread.c index 2226012ed11d6..258cb16999183 100644 --- a/src/ruby/ext/grpc/rb_event_thread.c +++ b/src/ruby/ext/grpc/rb_event_thread.c @@ -84,7 +84,8 @@ static grpc_rb_event* grpc_rb_event_queue_dequeue() { } } if (event != NULL && event->pid != getpid()) { - fprintf(stderr, "DEQUEUED EVENT PID %d != CURRENT PID %d\n", event->pid, getpid()); + fprintf(stderr, "DEQUEUED EVENT PID %d != CURRENT PID %d\n", event->pid, + getpid()); } return event; }