<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>Ok - I got the bottom of this.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>1) I had a c++ class with no virtual destructor 
defined.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>2) </FONT></SPAN>I wrapped it in sip.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>3) Constructed an instance in python</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>4) Transferred ownership to C++</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>5) allowed c++ to delete it</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>The sip wrapper still continued to live in the cpp to 
wrapper hash map.&nbsp; This would cause nasty crashes.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>I wonder if there is anything that can be done to fix this 
or at least detect it? Adding a virtual destructor and exposing that in the sip 
definition fixed it of course.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>Regards,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2>Andrew</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=650532300-09112007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> pyqt-bounces@riverbankcomputing.com 
[mailto:pyqt-bounces@riverbankcomputing.com] <B>On Behalf Of </B>Dr Andrew 
Perella<BR><B>Sent:</B> 08 November 2007 23:09<BR><B>To:</B> 
pyqt@riverbankcomputing.com<BR><B>Subject:</B> [PyQt] 
'pyqt@riverbankcomputing.com'<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV><FONT face=Arial size=2>I get exactly the same&nbsp;<SPAN 
class=700354622-08112007>objmap.c </SPAN>crash as you in an ap<SPAN 
class=700354622-08112007>p</SPAN>lication I have written using SIP (but not 
PyQT).</FONT></DIV>
<DIV><FONT size=2><FONT face=Arial>The crash is timing related - depending on 
when the garbage collector is called, the&nbsp;sip hashmap still has a 
reference&nbsp;sometimes to a freed python wrapper.</FONT></FONT></DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial size=2>I will investigate 
further.</FONT></SPAN></DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial 
size=2>Cheers,</FONT></SPAN></DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial 
size=2>Andrew</FONT></SPAN></DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial size=2>P.S. I made&nbsp;the 
same&nbsp;"fix" you did to objmap.c:</FONT></SPAN></DIV>
<DIV><SPAN class=700354622-08112007><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=700354622-08112007><FONT color=#0000ff size=2>
<P>while</FONT><FONT size=2> (</FONT><FONT color=#010001 size=2>w</FONT><FONT 
size=2> != </FONT><FONT color=#010001 size=2>NULL</FONT><FONT 
size=2>)</FONT></P>
<P><FONT size=2>{</FONT></P>
<P><FONT color=#008000><FONT size=2>/* We are removing it from the map here. 
*/</FONT></P></FONT>
<P><FONT size=2><FONT color=#010001>sipSetNotInMap</FONT>(<FONT 
color=#010001>w</FONT>);</FONT></P>
<P><FONT size=2><FONT color=#010001>sip_api_common_dtor</FONT>(<FONT 
color=#010001>w</FONT>);</FONT></P>
<P><FONT size=2><FONT color=#010001><SPAN 
class=700354622-08112007>&nbsp;</SPAN>w</FONT> = <FONT 
color=#010001>w</FONT>-&gt;<FONT color=#010001>next</FONT>;</FONT></P>
<P><FONT size=2></FONT>&nbsp;</P>
<P><SPAN class=700354622-08112007><FONT size=2>//extra code "fix" 
here</FONT></SPAN></P>
<P><FONT size=2><FONT color=#0000ff>if</FONT> (<FONT 
color=#010001>w</FONT>==0xdbdbdbdb)</FONT></P>
<P><FONT size=2>{</FONT></P>
<P><FONT size=2><FONT color=#010001>printf</FONT>(<FONT color=#a31515>"WARNING: 
SIP would normally crash - would try to access freed 
memory\n"</FONT>);</FONT></P>
<P><FONT size=2><FONT color=#010001>w</FONT>=<FONT 
color=#010001>NULL</FONT>;</FONT></P>
<P><FONT size=2>}</FONT></P>
<P><FONT size=2>}</FONT></P></SPAN></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<P><FONT face=Arial size=1>This e-mail is confidential and may be privileged. It 
may be read, copied and used only by the intended recipient. No communication 
sent by e-mail to or from Eutechnyx is intended to give rise to contractual or 
other legal liability, apart from liability which cannot be excluded under 
English law. </FONT></P>
<P><FONT face=Arial size=1>This email has been scanned for all known viruses by 
the Email Protection Agency.</P><A 
href="http://www.eutechnyx.com">www.eutechnyx.com</A> </FONT><FONT face=Arial 
size=1>Eutechnyx Limited. Registered in England No: 2172322</FONT>
<P></P>
<P><FONT face=Arial size=1>This email has been scanned for all known viruses by 
the Email Protection Agency</P></FONT><p><font face="Arial" size=1>This e-mail is confidential and may be 
privileged. It may be read, copied and used only by the intended recipient. No 
communication sent by e-mail to or from Eutechnyx is intended to give rise to 
contractual or other legal liability, apart from liability which cannot be 
excluded under English law. </font></p>
<p><font face="Arial" size=1>This email has been scanned for all known viruses by the 
Email Protection Agency.</p> <a href="http://www.eutechnyx.com">www.eutechnyx.com</a>
</font><font face="Arial" size=1>Eutechnyx Limited. Registered in England No: 
2172322</font></p>
</BODY></HTML>