<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 13 November 2014 18:37, Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr">Hi Vincent,<div><br></div><div>   one way, used in VisualWorks, is to ensure that only valid handles exist.  So very early at startup the system does some allInstances invocations on the classes of handles and invalidates all the handles found.  This doesn&#39;t fix handles stored as raw integers anywhere, but provided the system is designed to have specific objects for external handles (and I hope it is) this shouldn&#39;t happen.</div><div><br></div><div>Since snapshot is relatively rare and start-up relatively frequent (at least in e.g. a web deployment context), one performance improvement is to do the allInstances before snapshot, and then merely enumerate the collection of handles, rather than use allInstances.</div></div><div class="gmail_extra"><br></div></blockquote><div> </div><div>Just to add:<br></div><div> - (re)validating external resources could vary depending on library or how short/long-lived the resource is etc.<br></div><div>As you described, one of the scenarios is to flush invalid handles at system startup.<br></div><div>In NB i using session checking, to do it lazily, once there&#39;s an attempt to use external resource.<br></div><div>But all that, of course, doesn&#39;t addresses the problem when external resource get invalidated, for one or another reason, during same session. <br><br></div><div>Using proxy to control each and every access to external resource is, of course, an ultimate solution, but alas, quite expensive since imposes high overhead. I would call it a brute-force solution.<br><br></div><div>To minimize overhead, my approach often is to place a check at key entry part of algorithm, <br></div><div>so if check passed, then rest of algorithm can run safely without excessive checking.<br></div><div>But that really depends on design of external library/framework, whether it possible or not.<br></div><div>Usually, if you cleverly organize the access to services, it is possible to do it without using brute-force proxyfying.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 13, 2014 at 9:05 AM, Blondeau Vincent <span dir="ltr">&lt;<a href="mailto:vincent.blondeau@worldline.com" target="_blank">vincent.blondeau@worldline.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div link="blue" vlink="purple" lang="FR">
<div>
<p class="MsoNormal">Hi !<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span lang="EN-US">I am doing a binding to the R library with NativeBoost.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">So I create some external objects and apply some functions on them.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">If the handle to the object is not valid, either the function crashes or gives a bad result.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">How can I ensure to have a valid pointer at anytime ?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I see two solutions:<u></u><u></u></span></p>
<p><u></u><span lang="EN-US"><span>-<span style="font:7.0pt &quot;Times New Roman&quot;">         
</span></span></span><u></u><span lang="EN-US">Either check at any NativeBoost call that the handle is valid (by checking the session id)<u></u><u></u></span></p>
<p><u></u><span lang="EN-US"><span>-<span style="font:7.0pt &quot;Times New Roman&quot;">         
</span></span></span><u></u><span lang="EN-US">Or do a proxy that checks the session and recreate the external object.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">What do you think ?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks in advance,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Cheers,<u></u><u></u></span></p>
<p class="MsoNormal"><span>Vincent BLONDEAU<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<br>
<hr>
<font color="Gray" face="Arial" size="1"><br>
Ce message et les pièces jointes sont confidentiels et réservés à l&#39;usage exclusif de ses destinataires. Il peut également être protégé par le secret professionnel. Si vous recevez ce message par erreur, merci d&#39;en avertir immédiatement l&#39;expéditeur et de le
 détruire. L&#39;intégrité du message ne pouvant être assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir cette transmission exempte de tout virus,
 l&#39;expéditeur ne donne aucune garantie à cet égard et sa responsabilité ne saurait être recherchée pour tout dommage résultant d&#39;un virus transmis.<br>
<br>
This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged. If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be secured on the Internet,
 the Worldline liability cannot be triggered for the message content. Although the sender endeavours to maintain a computer virus-free network, the sender does not warrant that this transmission is virus-free and will not be liable for any damages resulting
 from any virus transmitted.<br>
</font>
</div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>best,<div>Eliot</div></div>
</div>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Best regards,<br>Igor Stasenko.</div>
</div></div>