[ 
https://issues.apache.org/jira/browse/TS-5076?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Phil Sorber resolved TS-5076.
-----------------------------
    Resolution: Fixed

Marking this resolved since it's in master.

> NetVC is lost from read or write enable_list
> --------------------------------------------
>
>                 Key: TS-5076
>                 URL: https://issues.apache.org/jira/browse/TS-5076
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Network
>            Reporter: Oknet Xu
>            Assignee: Oknet Xu
>             Fix For: 6.2.1, 7.1.0
>
>          Time Spent: 3.5h
>  Remaining Estimate: 0h
>
> The related code here:
> {code}
> void
> UnixNetVConnection::reenable(VIO *vio)
> {
>   if (STATE_FROM_VIO(vio)->enabled)
>     return;
>   set_enabled(vio);
>   if (!thread)
>     return;
>   EThread *t = vio->mutex->thread_holding;
>   ink_assert(t == this_ethread());
>   ink_release_assert(!closed);
>   if (nh->mutex->thread_holding == t) { 
> ...
>     MUTEX_TRY_LOCK(lock, nh->mutex, t);
>     if (!lock.is_locked()) {
>       if (vio == &read.vio) {
>         if (!read.in_enabled_list) {    // -----------> the condition check 
> is not atomic
>           read.in_enabled_list = 1;   // -----------> the variable set is not 
> atomic
>           nh->read_enable_list.push(this);
>         }
>       } else {
>         if (!write.in_enabled_list) {   // -----------> the write side 
>           write.in_enabled_list = 1;  // -----------> the write side
>           nh->write_enable_list.push(this);
>         }
>       }
>       if (nh->trigger_event && nh->trigger_event->ethread->signal_hook)
>         nh->trigger_event->ethread->signal_hook(nh->trigger_event->ethread);
>     } else {
> ...
>     }
>   }
> }
> {code}
> Due to the unstable condition check code, the nh->read_enable_list.push(this) 
> would push a netvc into atomic queue that is already inside a queue.
> It leads the elements in atomic queue after the netvc will be lost.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to