saimayithri commented on PR #13362:
URL: https://github.com/apache/trafficserver/pull/13362#issuecomment-4971386471

   Hi! While looking into this further, I realized my original hypothesis for 
#13362 doesn't seem to explain all of the observed crashes.
   
   In particular, @wuxcer's latest production report was really helpful here. 
The new crash happened even after the 'if (this->thread != this_ethread()) 
return true;` guard was added, which means execution had already passed that 
check and `vc->thread == this_ethread()` in that case.
   
   That made me take another look at the assumptions behind 
`add_to_active_queue()`.
   
   While looking through the history, I noticed that commit 
`c929ed6fdee34a67529b55f9fe1c47d449ee854f` introduced the assertion with the 
comment that callers should already have acquired the `NetHandler` lock before 
touching `active_queue`.
   
   However, from what I can tell, the current HTTP session event dispatch runs 
while holding the continuation/session mutex (`session->mutex`), which is 
different from nh->mutex
   
   At this point I think I may be misunderstanding the intended invariant, so 
before I continue investigating I wanted to ask:
   
   Is `add_to_active_queue()` still intended to be called only from contexts 
that already hold `nh->mutex`, or is it expected to acquire `nh->mutex` itself 
with the `MUTEX_TRY_LOCK`?
   
   I'm trying to understand whether the remaining issue is still in the HTTP/2 
scheduling path, or whether there's a deeper NetHandler invariant that I'm 
missing.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to