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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html