[squeak-dev] Re: [Cuis] FFI problem with ExternalAddress

Juan Vuletich juan at jvuletich.org
Tue Feb 16 19:14:02 UTC 2010


Andreas Raab wrote:
> Hi Phil -
>
> The only thing that comes to mind is the special objects array. Try 
> executing "Smalltalk recreateSpecialObjectsArray" to ensure it is 
> initialized correctly, if that doesn't help check (Smalltalk 
> specialObjectsArray copyFrom: 44 to: 48) which should say 
> #(ExternalAddress ExternalStructure ExternalData ExternalFunction 
> ExternalLibrary).
>
> Cheers,
>   - Andreas
>

Thanks for answering Andreas. Just for the record: in 
#recreateSpecialObjectsArray Cuis includes the classes you say, but with 
#at:ifAbsent: , as they are usually not present. So, evaluating 
Smalltalk recreateSpecialObjectsArray should do it.

Phil, I believe you are the first to try FFI on Cuis. It is good to know 
that it is almost running! Please keep us posted on your progress.

Cheers,
Juan Vuletich

> Phil (list) wrote:
>> I'm not sure whether my problem is specific to Cuis or is more 
>> generally related to installing FFI.  I've loaded FFI (from 
>> FFI-Kernel-ar9) by extracting the archive, filing in the extracted 
>> .st file, and in a workspace executing:
>>
>> (Smalltalk at: #ExternalType) initialize.
>> (Smalltalk at: #ExternalStructure) compileAllFields.
>>
>> FFI appears to be working at least somewhat (i.e. I'm able to make 
>> basic OpenGL calls which are behaving as expected) but when I attempt 
>> to work with externally allocated memory, I'm having problems. With 
>> the following example:
>>
>> extern := ExternalAddress allocate: 12.
>>
>> I observe the following behavior:
>> 1) Do it executes without error
>> 2) Most things that attempt to look at the result (i.e. print it) 
>> crash the image
>> 3) extern class returns CompiledMethod
>> 4) Accessing it with what should be valid indexes using byteAt: and 
>> byteAt:put: either result in an invalid index error or crashes the 
>> image.
>>
>> The VM I'm using is 4.2.2 on OS X and I'm not able to reproduce the 
>> behavior in any of my non-Cuis images and am curious if there's an 
>> installation/configuration step I've missed re: FFI or if there is a 
>> bug specific to Cuis that might be causing this issue?
>>
>> Thanks,
>> Phil
>>



More information about the Squeak-dev mailing list