Monday, January 23, 2012, 12:19:00 PM, you wrote: > The key question is "why is the test failing", and AFAICT it looks like > NetAccept::init_accept() isn't doing:
> PollDescriptor *pd = get_PollDescriptor(t); > if (a->ep.start(pd, a, EVENTIO_READ) < 0) > link in init_accept_per_thread(). So it isn't clear to me why it would get > called ever. I'm not sure what you mean by "it" in "why it would get called ever". Could you clarify? I checked on this after reading your email and that logic isn't done normally for testing or runtime, only for the case of explicitly passing in accept_thread == 0 & frequent_accept. The default configuration has accept_threads == 1 and testing has frequent_accept == false. My attempt to clean up the NetProcessor interface by eliminating the obsolete massive argument accept() method changed the test logic to exercise this case. So it's possible that there is a general problem which has been hidden. For now, I have reverted frequent_accept == true as the default and changed TSNetAccept to set it explicitly to false to preserve previous behavior. That fixes my current problem. While I'm still not clear on what the root cause is, I did notice that only in the failing path is the VC put on the read_ready_list and marked triggered (contrast UnixNetVConnection::acceptEvent and NetAccept::acceptFastEvent).