E0108 23:10:24.009205427 68294 ev_epoll1_linux.cc:1098] assertion failed: next_worker->state == KICKED E0108 23:10:24.011880853 68330 ev_epoll1_linux.cc:1098] assertion failed: next_worker->state == KICKED E0108 23:10:24.011978910 68369 ev_epoll1_linux.cc:1098] assertion failed: next_worker->state == KICKED
Looking at the code in branch 1.8.x [1], I see these two lines:
1098: GPR_ASSERT(next_worker->state == KICKED);
1099: SET_KICK_STATE(next_worker, KICKED);
I'm curious why the code is asserting X right before it's making X true? It makes me look further and I see:
1044 } else if (next_worker->state == KICKED) {
...
goto done; ... 1063 } else if (next_worker->state == UNKICKED) {...
goto done;
...
1072 } else if (next_worker->state == DESIGNATED_POLLER) {...
goto done;
} else {
1098 GPR_ASSERT(next_worker->state == KICKED);
that seems to be a bug somewhere, since if we reach line 1098, then next_worker->state cannot be KICKED?Ideas?Thanks!
gpr_log(GPR_ERROR, "root: %p (%d), next: %p (%d)", root_worker, root_worker->state, next_worker, next_worker->state); } |
--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscribe@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/11b1743c-1f45-4f6c-b983-64559b36d040%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi,This looks like a bug in the code.- Does this failure happen consistently ?
- Could you give more details on your test that is causing this? (would be ideal if I can create something similar)Also, would it be possible for you to rerun your tests by replacing the assert with the following log line ?(I am interested in seeing what is the state the root and root->next workers are)if (next_worker->state != KICKED) {
gpr_log(GPR_ERROR, "root: %p (%d), next: %p (%d)", root_worker, root_worker->state, next_worker, next_worker->state); }
oh.. I didn't realize you were doing a fork() call. grpc actually does not support fork and is known to create strange issues like the one you reported.
SET_KICK_STATE(next_worker, KICKED);
I will remove it.