]> git.ipfire.org Git - thirdparty/squid.git/commit
Bug 3480: StoreEntry::kickProducer() segfaults in store_client::copy() context
authorAlex Rousskov <rousskov@measurement-factory.com>
Mon, 14 Oct 2013 20:11:13 +0000 (14:11 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Mon, 14 Oct 2013 20:11:13 +0000 (14:11 -0600)
commit1809cebd66e5eaaf8113fd49511bf27f422cc654
treec6c40e8c76a2c3feb498ced5fa5bd5c06646552c
parent9b74279f16f119159893e3b5855d58304b2df67a
Bug 3480: StoreEntry::kickProducer() segfaults in store_client::copy() context

Short-term fix: Lock StoreEntry object so that it is not freed by
storeClientCopy2() callbacks. Also lock StoreEntry in storeUnregister()
context because an aborting entry may be deleted there unless it is
double-locked.

See bug 3480 comment #27 for detailed call stack analysis. Additional cases
include rejected copied HIT due to Var mismatch and hits blocked by
reply_from_cache directive (under development; see bug 3937).

Long-term, we need to make store copying asynchronous and revise StoreEntry
locking approach.
src/store_client.cc