[squeak-dev] Reassessing the hack in WriteStream>>nextChunkPut: (was: Squeak 4.6 release update)

David T. Lewis lewis at mail.msen.com
Sun Mar 8 15:59:24 UTC 2015


On Sun, Mar 08, 2015 at 11:29:18AM -0400, David T. Lewis wrote:
> On Sun, Mar 08, 2015 at 11:44:18AM +0100, Tobias Pape wrote:
> > Hi,
> > 
> > On 08.03.2015, at 04:18, Levente Uzonyi <leves at elte.hu> wrote:
> > 
> > > On Sat, 7 Mar 2015, David T. Lewis wrote:
> > > 
> > >> On Sat, Mar 07, 2015 at 08:28:55PM +0100, Tobias Pape wrote:
> > >>> Hey,
> > >>> On 07.03.2015, at 19:01, gettimothy <gettimothy at zoho.com> wrote:
> > >>> 
> > >>>> The image fixes the WriteStream>>NextChunkPut error we where getting when trying to modify comments which makes me happy (:
> > >>> 
> > >>> to which fix do you refer?
> > >>> There is a hack out there calling flush every now and then,
> > >>> but this all calls for a principled solution for streams that
> > >>> read _and_ write.
> > >> 
> > >> You are right that it is a hack, but the actual problem is a defect
> > >> in some C runtime libraries, notably on Ubuntu but possibly others
> > >> as well.
> > > 
> > > Are you sure it's a bug in the OS? Isn't it just the allocate-on-flush behavior?https://en.wikipedia.org/wiki/Allocate-on-flush
> 
> No, I am not sure. I had convinced myself that it was a libc issue, but I may be wrong.
> 

To check this, I tried running an image from a thumb drive with vfat file
system, which presumably does not have the allocate-on-flush feature. The
bug is still present (confirmed by reverting WriteStream>>nextChunkPut: to
the earlier version). So the problem does not appear to be associated with
the file system.

Dave



> > 
> > I too doubt an OS bug.
> > Someone (i don't remember) said to me, that the behavior of the c calls
> > make clear not to rely on certain thing.
> > I plan to investigate the issue soonish.
> > 
> > best
> > 	-tobias
> 
> That would be great.
> 
> The workaround that "fixes" the comment problem is in WriteStream>>nextChunkPut:,
> so if you remove the #flush at the end of this method, the problem can be
> reproduced. At the time, I was not able to come up with a unit test that would
> reproduce the problem, but my best guess as to what was happening is in the
> update comment:
> 
> 
>   Name: Collections-dtl.568
>   Author: dtl
>   Time: 5 May 2014, 12:39:30.026 pm
>   
>   Add a flush to WriteStream>>nextChunkPut:
>   
>   This is a workaround for a bug in the runtime library of some versions of
>   Ubuntu. The symptom is that creation of a class comment for a class that
>   previously had no comment leads to a file size error in the new RemoteStream
>   that points to the class comment. Actual file size and contents of the
>   changes file are not affected by this bug, and the error occurs when reading
>   contents of the changes file immediately following the initial save, Flushing
>   the stream after writing a chunk to the changes file prevents the problem.
> 
> Dave
> 


More information about the Squeak-dev mailing list