[squeak-dev] ReleaseBuilder package

tim Rowledge tim at rowledge.org
Thu Sep 12 23:17:57 UTC 2013


(We're going to have to be careful here not to confuse which Tim you're writing to; if y'all can remember to use a lowercase 't' for me it might help)


On 12-09-2013, at 4:01 PM, Bob Arning <arning315 at comcast.net> wrote:

> Tim,
> 
> I does not appear to be an image problem. Frank suggested this:
> 
> On 4/26/13 6:17 AM, Frank Shearar wrote
>> For those not following the Pharo list, it looks like the root cause
>> is that the glibc in Ubuntu 13.04 doesn't immediately write new
>> content out to the file. Thus you can "write" to the file, and then
>> read from the file, only your RemoteString starts off the end of the
>> file. The fix is to make WriteStream >> #nextPutChunk: call "self
>> flush". I've pushed a 4.5 fix to trunk, but have not yet done the same
>> for the 4.4 and 4.3 update streams.
>> 
>> frank
>> 
>> 
>> 
> Some thought this not the nicest solution, but it would be useful to know if the image you are using has had this added or if you can add it and try.
> 
> Frank did add this later after retracting the squeak change
> That's correct: patching #nextChunkPut: almost certainly masks the underlying problem, and the more experience Squeakers strongly suggested I revert. I'll post updates as they happen.
> If I were experiencing this problem I suspect I'd make the fix and move on rather than re-experience the problem over and over. 
> 
> Also see if your Linux distro has fixed it on their end

There is, or used to be, code in the FilePlugin that attempted to help with this since a lot of systems had a problem due to over-zealous write caching that ignored self-consistency. Ah, here we are; in sqFilePluingBasicPrims.c, in sqFileWriteFromAt() we have 
	if (f->lastOp == READ_OP) fseek(file, 0, SEEK_CUR);  /* seek between reading and writing */
The intent here - and remember this is code over 15 years old - was to force the actual write by inserting a seek. IIRC a flush was considered too expensive. It only really affects unices as far as I can see since RISC OS, OS X & Win32 all have their own more locally customised versions that handle it platform specifically.

If unices have changed in such a way that they need more thorough flushing then we need some expert knowledge of the best options.



tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Science is imagination equipped with grappling hooks.



More information about the Squeak-dev mailing list