On Thu, 2011-03-10 at 16:40 -0700, Sage Weil wrote: > > > Hmm, maybe. I wouldn't expect this behavior from any allocator, > though! > > > > > > Can you drill down a bit further and see if either of these is > > > responsible? > > > > > > virtual ~Message() { > > > assert(nref.read() == 0); > > > if (connection) > > > connection->put(); > > > if (throttler) > > > throttler->put(payload.length() + middle.length() + > data.length()); > > > } > > > > > > (msg/Message.h) > > > > Hmmm, this is the patch I'm running to produce above. > > It seems pretty definitive to me; am I missing something? > > delete this; > > is calling the virtual destructor ~MOSDPing(), and then ~Message(), > and > only then releasing the memory to the allocator. Doh!!! Sorry, I should have been doing more thinking and less typing last night. > ~MOSDPing doesn't do > anything, but ~Message adjusts the throttler (which involves a mutex > that > *shouldn't* be contended :) and a connection->put(), which calls > ~Connection() and then releases memory. > > My money is on the throttler, but let's see! OK, I see what you're after..... -- Jim > > sage > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html