[Interest] QMap crashing in a thread

BOUCARD Olivier boucard_olivier at yahoo.fr
Thu Mar 13 23:35:47 CET 2014


Ok I discover that the this this pointer is not the same inside the render_POST function.
Somehow they are able to instanciate my class without using the default constructor nor the copy constructor.
So all the class members are not initialized.
Now, I have use different strategy.




Le Vendredi 14 mars 2014 0h00, Jason H <scorp1us at yahoo.com> a écrit :
 
I meant when the MyClass* part of the map is gone.
>Remember to remove the key as well as the MyClass instance.
>
>
>
>________________________________
> From: BOUCARD Olivier <boucard_olivier at yahoo.fr>
>To: Jason H <scorp1us at yahoo.com>; "interest at qt-project.org" <interest at qt-project.org> 
>Sent: Thursday, March 13, 2014 5:47 PM
>Subject: Re: [Interest] QMap crashing in a thread
> 
>
>
>The weird thing is that I have debug outputs in my Server destructor and they only appear at the end of the of the application as they should.
>When I quit my application without sending a HTTP request.
>And if I access my QMap in the destructor I have
 no problem.
>
> 
>
>Le Jeudi 13 mars 2014 22h40, Jason H <scorp1us at yahoo.com> a écrit :
> 
>I wouldn't think so. as they should have a very good idea of what this is, and that this exists.
>>
>>
>>I would think perhaps you are accessing a deleted object?
>>
>>
>>I've used QMap successfully in similar situations.
>>
>>
>>
>>________________________________
>> From: BOUCARD Olivier <boucard_olivier at yahoo.fr>
>>To: "interest at qt-project.org" <interest at qt-project.org> 
>>Sent: Thursday, March 13, 2014 4:21 PM
>>Subject: Re: [Interest] QMap crashing in a thread
>> 
>>
>>
>>Hum they do a static_cast before calling the callback:
>>
>>
>>void render_POST(const http_request& req, http_response** res)
>>{
>> 
 static_cast<CHILD*>(this)->render_POST(req, res);
>>}
>>
>>
>>Maybe is the source of the problem.
>>
>>
>>
>>
>>Le Jeudi 13 mars 2014 22h16, BOUCARD Olivier <boucard_olivier at yahoo.fr> a écrit :
>> 
>>Thanks Thiago.
>>>
>>>I'm not sure to understand. QMap::contains is const.
>>>So as QMap is re-entrant, in theory QMap::contains should be "thread-safe".
>>>And I have no other thread accessing the map at this time.
>>>I sent request manually with curl.
>>>
>>>
>>>
>>>
>>>
>>>
>>>Le Jeudi 13 mars 2014 22h07, Thiago Macieira <thiago.macieira at intel.com> a écrit :
>>> 
>>>Em qui 13 mar 2014, às 18:52:32, BOUCARD Olivier escreveu:
>>>>> I have this Server class with a QMap<QString, MyClass*> object member.
>>>>> This server is a HTTP server class using libhttpserver.
>>>>> I have also a member function which is called by
 libhttpserver when it
>>>>> receives a HTTP request. This function is called in a thread created by
>>>>>
 libhttpserver automatically. And when I try call a  function on the QMap
>>>>> inside this function I get a Segmentation Fault:
>>>>
>>>>You probably forgot to lock a mutex before accessing that QMap.
>>>>-- 
>>>>Thiago Macieira - thiago.macieira (AT) intel.com
>>>>  Software Architect - Intel Open Source Technology Center
>>>>
>>>>
>>>>_______________________________________________
>>>>Interest mailing list
>>>>Interest at qt-project.org
>>>>http://lists.qt-project.org/mailman/listinfo/interest
>>>>
>>>>
>>>
>>>_______________________________________________
>>>Interest mailing list
>>>Interest at qt-project.org
>>>http://lists.qt-project.org/mailman/listinfo/interest
>>>
>>>
>>>
>>
>>_______________________________________________
>>Interest mailing list
>>Interest at qt-project.org
>>http://lists.qt-project.org/mailman/listinfo/interest
>>
>>
>>
>>
>>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140313/389a5fc4/attachment.html>


More information about the Interest mailing list