On 14/01/2014 3:31 p.m., Alex Rousskov wrote:
> On 01/07/2014 08:35 AM, Alex Rousskov wrote:
> 
>> 2) [Add cbdata debugging to] find which object stores the invalid cbdata
>> pointer. Then find how that invalid pointer gets to that object. 
> 
> I think it happens here:
> 
> 
>>> #8  0x0834f190 in CommCbMemFunT (aMeth=
>>>     (void (Comm::TcpReceiver::*)(Comm::TcpReceiver * const, const
>>> CommCbMemFunT<Comm::TcpReceiver, CommCloseCbParams>::Params &))
>>> 0x834e270 <Comm::TcpReceiver::tcpConnectionClosed(CommCloseCbParams
>>> const&)>, aJob=..., this=0xbffff268) at ../../../src/CommCalls.h:180
> 
> 
> where we are passing a raw job pointer (job.get()) to CommCloseCbParams
> object which then uses it as cbdata in CommCommonCbParams constructor:
> 
>>     CommCbMemFunT(const CbcPointer<C> &job, Method meth): JobDialer<C>(job),
>>             CommDialerParamsT<Params_>(job.get()),
> 
>>     CommCloseCbParams(void *aData);
> 
>> CommCommonCbParams::CommCommonCbParams(void *aData):
>>         data(cbdataReference(aData)), ...
> 
> 
> Does the attached untested patch help?

Perfectly. Thank you!!!

I have applied your fix to the branch with your details. Would you care
to do the honours for trunk please?

Amos

Reply via email to