Thanks john. I will to investigate that. What is strange is that damien on linux did not get the problem. So may be this is coming from the image. I can systematically get an error usging the latest core 470 and the following script http://code.google.com/p/pharo/issues/list?cursor=1295 stef On Oct 13, 2009, at 7:46 AM, John M McIntosh wrote:
Well the FilePlugin is built into the VM versus being an external VM and it supplies the basic file I/O operations. So you won't find a plugin called that unless some-one decided to compile up one.
So either the plugin method call fails because it cannot be found, or it fails because it explicitly failed on bad data, or other reason (an error?)
The failure cases are:
(1) the id object is not a byte array type of object. Given MultiByteFileStream(StandardFileStream)>>primGetPosition: Receiver: MultiByteFileStream: '/Data/Downloads/pharo1.0-10470- BETAdev09.10.2/installScript.st' Arguments and temporary variables: id: #[153 12 133 142 168 105 19 160 0 0 0 0 18 18 0 0 0 0 0 0 0 0 0 0] Receiver's instance variables:
Yes that looks like a byte array object.
(b) the size of id is wrong This is unlikely since the id bytearray hasn't changed size in decades. Let me assume the number of bytes is correct.
(c) the bytes 5-8 have to be non-zero, otherwise we fail Nope, it's 168 105 19 160
(d) bytes 1-3 have to be non-zero AND match some magic value in the VM Well 153 12 133 142 is non zero, but what's the magic value?
MMm I don't think you can get the magic value directly, but at the point of failure you could create a new file and examine the 'id' value for the StandardFileStream and see if the first 4 bytes match the first 4 bytes of this value (153 12 133 142) Failure to match would cause a prim failure.
Oh wait I see you can invoke self primSizeNoError: fileID and if that returns NIL the handle is stale.
See ensureOpen
(e) the ftello() fails because the file doesn't exist, or an I/O error happened, or the path is bad. Or some icky file system error. Alas we don't feed back or record what the error is, but I think you fail on (d)?
I'd bet on (d) the MultiByteFileStream instance is some cached value from a previous VM usage, try the primSizeNoError: and see what it returns when you're inspecting the MultiByteFileStream.
On 2009-10-12, at 9:42 PM, Stéphane Ducasse wrote:
Hi
when trying to build the dev image I systematically get a DNU
primGetPosition: id "Get this files current position."
<primitive: 'primitiveFileGetPosition' module: 'FilePlugin'> self primitiveFailed
and I do not have the FilePlugin in the resources VM folder.
I checked the web site of john but could not find an explanation.
Stef
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- = = = = = ====================================================================== John M. McIntosh <johnmci@smalltalkconsulting.com> Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http:// www.smalltalkconsulting.com = = = = = ======================================================================
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project