If the FFI call is flawed, why does it work when not stepping in the debugger?  
I'm not buying it :)




-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Igor Stasenko
Sent: Monday, July 19, 2010 3:02 PM
To: Pharo Development
Subject: [Pharo-project] Fwd: [squeak-dev] Re: Debug-it and external calls

---------- Forwarded message ----------
From: Igor Stasenko <[email protected]>
Date: 19 July 2010 23:00
Subject: Re: [squeak-dev] Re: [Pharo-project] Debug-it and external calls
To: The general-purpose Squeak developers list 
<[email protected]>


On 19 July 2010 21:42, Andreas Raab <[email protected]> wrote:
> On 7/19/2010 9:29 AM, Igor Stasenko wrote:
>>
>> No, debugger, actually doing a primitive call, but in order to 
>> intercept a primitive failure and 'step into' method, it does the 
>> trick with replacing the subject method with temporary method (which 
>> will call the same primitive with same arguments&  recevier).
>> Then, if primitive runs ok, it simply behaves as a 'step over', and 
>> if primitive fails, then debugger itercepts it and creates a context 
>> for subject method, which should handle primitive failure.
>
> Correct. Stepping over FFI calls will only fail if the FFI call 
> actually fails. So whatever the problem it's somewhere in your FFI call.
>
But! The problem which i discovered not long ago, that if FFI method contains 
many arguments (close to max 15), then debugger is unable to invoke it, because 
#perform:... method works in a way, that its using temps of context, where it 
were invoked. I fixed it by setting a #perform method's frame to be a large one.


See http://bugs.squeak.org/view.php?id=7534

> Cheers,
>  - Andreas
>
>> On 19 July 2010 19:22, Schwab,Wilhelm K<[email protected]>  wrote:
>>>
>>> So the external call does not happen and the fall-back code executes.
>>>  That explains it.  It might be nice if FFI calls could be made to 
>>> happen, or at least to have a more informative error message, such 
>>> as "Primitive not executed by the debugger" rather than "Unable to find 
>>> function address."
>>>
>>> Bill
>>>
>>>
>>>
>>>
>>> ________________________________________
>>> From: [email protected]
>>> [[email protected]] On Behalf Of Levente 
>>> Uzonyi [[email protected]]
>>> Sent: Monday, July 19, 2010 12:20 PM
>>> To: [email protected]
>>> Subject: Re: [Pharo-project] Debug-it and external calls
>>>
>>> On Mon, 19 Jul 2010, Schwab,Wilhelm K wrote:
>>>
>>>> I often (not always??) find that using the Debug-it command and 
>>>> debugging into an external call (FFI) leads to a false claim of 
>>>> "Unable to find function address."  Stepping over the call works; 
>>>> stepping into it make it look like it fails.
>>>>
>>>> I am curently using a 1.1 RC2 image and the 4.0.3 vm on Ubuntu.  I 
>>>> cannot easily move the offending code to Windows, nor do I 
>>>> particularly care to do so (feels good<g>), and FFI is fairly uncommon in 
>>>> Squeak/Pharo.
>>>>
>>>> Can anyone else tinker with this to see if it is real?
>>>
>>> IIRC when you're using the debugger, primitives are not evaluated.
>>>
>>>
>>> Levente
>>>
>>>>
>>>> Bill
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [email protected]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [email protected]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>
>>
>>
>
>
>



--
Best regards,
Igor Stasenko AKA sig.



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to