[Vm-dev] Re: [Pharo-dev] How to check whether the handle is always valid with NativeBoost ?

Igor Stasenko siguctua at gmail.com
Thu Nov 13 22:39:59 UTC 2014


On 13 November 2014 18:37, Eliot Miranda <eliot.miranda at gmail.com> wrote:

>
> Hi Vincent,
>
>    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'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't happen.
>
> 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.
>
>
Just to add:
 - (re)validating external resources could vary depending on library or how
short/long-lived the resource is etc.
As you described, one of the scenarios is to flush invalid handles at
system startup.
In NB i using session checking, to do it lazily, once there's an attempt to
use external resource.
But all that, of course, doesn't addresses the problem when external
resource get invalidated, for one or another reason, during same session.

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.

To minimize overhead, my approach often is to place a check at key entry
part of algorithm,
so if check passed, then rest of algorithm can run safely without excessive
checking.
But that really depends on design of external library/framework, whether it
possible or not.
Usually, if you cleverly organize the access to services, it is possible to
do it without using brute-force proxyfying.

On Thu, Nov 13, 2014 at 9:05 AM, Blondeau Vincent <
> vincent.blondeau at worldline.com> wrote:
>
>>  Hi !
>>
>>
>>
>> I am doing a binding to the R library with NativeBoost.
>>
>> So I create some external objects and apply some functions on them.
>>
>>
>>
>> If the handle to the object is not valid, either the function crashes or
>> gives a bad result.
>>
>>
>>
>> How can I ensure to have a valid pointer at anytime ?
>>
>>
>>
>> I see two solutions:
>>
>> -          Either check at any NativeBoost call that the handle is valid
>> (by checking the session id)
>>
>> -          Or do a proxy that checks the session and recreate the
>> external object.
>>
>>
>>
>> What do you think ?
>>
>>
>>
>> Thanks in advance,
>>
>>
>>
>> Cheers,
>>
>> Vincent BLONDEAU
>>
>>
>>
>> ------------------------------
>>
>> Ce message et les pièces jointes sont confidentiels et réservés à l'usage
>> exclusif de ses destinataires. Il peut également être protégé par le secret
>> professionnel. Si vous recevez ce message par erreur, merci d'en avertir
>> immédiatement l'expéditeur et de le détruire. L'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'expéditeur ne donne aucune garantie à cet égard et sa
>> responsabilité ne saurait être recherchée pour tout dommage résultant d'un
>> virus transmis.
>>
>> 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.
>>
>
>
>
> --
> best,
> Eliot
>
>


-- 
Best regards,
Igor Stasenko.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20141113/a86643a2/attachment-0001.htm


More information about the Vm-dev mailing list