De : Pharo-dev [mailto:pharo-dev-boun...@lists.pharo.org] De la part de 
Blondeau Vincent
Envoyé : lundi 17 novembre 2014 16:41
À : Pharo Development List
Cc : Squeak Virtual Machine Development Discussion
Objet : Re: [Pharo-dev] [Vm-dev] Re: How to check whether the handle is always 
valid with NativeBoost ?

Hi

Thanks a lot for your answers !
It is very helpful.

But how can I launch a script at the startup or shutdown of the image 
especially for Pharo ?

Implement in the class side :
>>initialize
>>          Smalltalk addToStartUpList: self.

And
>>startUp
                “some code”
>>shutDown
                “some code”


Vincent



De : Pharo-dev [mailto:pharo-dev-boun...@lists.pharo.org] De la part de Igor 
Stasenko
Envoyé : jeudi 13 novembre 2014 23:40
À : Squeak Virtual Machine Development Discussion
Cc : Pharo Development List
Objet : Re: [Pharo-dev] [Vm-dev] Re: How to check whether the handle is always 
valid with NativeBoost ?



On 13 November 2014 18:37, Eliot Miranda 
<eliot.mira...@gmail.com<mailto:eliot.mira...@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.blond...@worldline.com<mailto:vincent.blond...@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.

________________________________

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.

________________________________

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.

Reply via email to