Print

Print


  Branch: refs/heads/master
  Home:   https://github.com/xrootd/xrootd
  Commit: b9273dd701c82d2a4c07793b73c2cd7ddab0604e
      https://github.com/xrootd/xrootd/commit/b9273dd701c82d2a4c07793b73c2cd7ddab0604e
  Author: Brian Bockelman <[log in to unmask]>
  Date:   2015-07-05 (Sun, 05 Jul 2015)

  Changed paths:
    M src/XrdCl/XrdClStream.cc

  Log Message:
  -----------
  Release Stream lock before invoking callbacks. #216

OnReadTimeout will call OnError with the Stream's lock held.
This causes OnError to invoke the user's callback with the
Stream lock held, possibly causing a lock ordering issue.

This fixes an observed deadlock within CMSSW over the following
objects:

Thread 1
    FileStateHandler::VectorRead takes FileStateHandler lock
    Stream::Send tries to take Stream lock

Thread 5
    FileTimer::Run takes FileTimer lock
    FileStateHandler::Tick tries to take FileStateHandler

Thread 6
    Stream::OnReadTimeout takes Stream lock
    DelayedClose::HandleResponseWithHosts  (this is callback code in CMSSW); this deletes a File object, which eventually calls
    FileTimer::UnRegisterFileObject tries to take FileTimer lock


  Commit: bf3bfd69a3b6374baeadeb3d1636396813d2d5d7
      https://github.com/xrootd/xrootd/commit/bf3bfd69a3b6374baeadeb3d1636396813d2d5d7
  Author: simonmichal <[log in to unmask]>
  Date:   2015-07-09 (Thu, 09 Jul 2015)

  Changed paths:
    M src/XrdCl/XrdClStream.cc

  Log Message:
  -----------
  Merge pull request #247 from bbockelm/unlock_stream

Release Stream lock before invoking callbacks. #216


Compare: https://github.com/xrootd/xrootd/compare/f9dd88d347c2...bf3bfd69a3b6

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1