<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="IS">Hello All.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS">I was recently prompted to add a flag to stackless, a way to block all tasklet switching.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS">This springs from the way that we are embedding stackless python in an game engine (UnReal) which sometimes makes callbacks into python.  Sometimes, this code will do nasty stuff that results in tasks switching, causing
 havoc with the control flow of the game engine.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS">To simplify this, I added a per-thread flag, switch_trap, which can be controlled in a similar way to block_trap.  If the logic causes a switch to be attempted, this should be trappable and the code should be easily fixable,
 or we can otherwise deal with it.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="IS">Anyway, doing this, adding it to slp_schedule_task(), and so on, uncovered a subtle flaw in stackless:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS">It turns out that slp_schedule_task() had no way of differentiating whether an exception result from this call came as a result of a failure to switch, or an exception being sent to the tasklet when it wakes up again.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="IS">So, I have changed the interface to be able to do this properly.  There are other reasons why switching can fail, including memory allocation failures and so on, so this seems like a necessary change.  I also fixed code
 both in stacklesseval.c and taskletmodule and channelobject to be able to cope with switch failure like this.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="IS">Now:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS">How does this sound to you?  The change is somewhat large and I would hesitate to simply check it in without some sort of review or otherwise approval.  Any suggestions?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="IS">K<o:p></o:p></span></p>
</div>
</body>
</html>