From: Francesco Chemolli Date: Thu, 9 Jul 2015 13:55:56 +0000 (+0200) Subject: Check invariant in DiskdFile::writeDone (CID 980998) X-Git-Tag: merge-candidate-3-v1~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f624e5da349e54ae5b35558923953b3388be8d02;p=thirdparty%2Fsquid.git Check invariant in DiskdFile::writeDone (CID 980998) --- diff --git a/src/DiskIO/DiskDaemon/DiskdFile.cc b/src/DiskIO/DiskDaemon/DiskdFile.cc index a257012a27..dcd85681c9 100644 --- a/src/DiskIO/DiskDaemon/DiskdFile.cc +++ b/src/DiskIO/DiskDaemon/DiskdFile.cc @@ -351,7 +351,7 @@ DiskdFile::readDone(diomsg * M) if (readRequest != NULL) { const uint32_t lcount = readRequest->unlock(); if (lcount == 0) - debugs(79, DBG_IMPORTANT, "invariant check failed: redRequest reference count is 0"); + debugs(79, DBG_IMPORTANT, "invariant check failed: readRequest reference count is 0"); } if (M->status < 0) { @@ -375,9 +375,13 @@ DiskdFile::writeDone(diomsg *M) debugs(79, 3, "storeDiskdWriteDone: status " << M->status); assert (M->requestor); WriteRequest::Pointer writeRequest = dynamic_cast(M->requestor); + /* remove the free protection */ - if (writeRequest != NULL) - writeRequest->unlock(); + if (writeRequest != NULL) { + const uint32_t lcount = writeRequest->unlock(); + if (lcount == 0) + debugs(79, DBG_IMPORTANT, "invariant check failed: writeRequest reference count is 0"); + } if (M->status < 0) { errorOccured = true;