Project

General

Profile

Bug #7389

smbd: hung threads when session is terminated or disconnected

Added by Vitaliy Gusev about 3 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
High
Assignee:
-
Category:
cifs - CIFS server and client
Start date:
2016-09-17
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

Stacks of all hung threads are the same:

swtch+0x12e
cv_wait+0x57
smb_net_send_uio+0x4b
smb_session_send+0x1a8
smb2_send_reply+0x25
smb2sr_work+0x354
smb2_tq_work+0x47
taskq_d_thread+0xae
thread_start+8

TASKQ: smb_workers

The problem is in missed cv_broadcast or cv_signal for error path in smb_net_send_uio() function:

DTRACE_PROBE1(send__wait__done, struct smb_session_t *, s);
if (rc != 0)
return (rc);

Files

smbd-net-send-uio-wakeup.patch (493 Bytes) smbd-net-send-uio-wakeup.patch possible fix Vitaliy Gusev, 2016-09-17 09:16 AM

History

#1

Updated by Gordon Ross about 3 years ago

This can happen if a client has several requests running when it disconnects.

#2

Updated by Electric Monk about 3 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit 88c10719b37fbb198caa2923d45715f6d98f7e87

commit  88c10719b37fbb198caa2923d45715f6d98f7e87
Author: Gordon Ross <gwr@nexenta.com>
Date:   2016-09-30T17:44:41.000Z

    7389 smbd: hung threads when session is terminated or disconnected
    Reviewed by: Matt Barden <matt.barden@nexenta.com>
    Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
    Reviewed by: Evan Layton <evan.layton@nexenta.com>
    Reviewed by: Vitaliy Gusev <gusev.vitaliy@gmail.com>

Also available in: Atom PDF