From: Nikodemus S. <de...@us...> - 2007-08-06 11:50:51
|
Update of /cvsroot/sbcl/sbcl In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv5898 Modified Files: NEWS version.lisp-expr Log Message: 1.0.8.16: refactored fd-stream buffering Thanks to David Smith and Andreas Bogkt who diagnosed the memory leaks this patch fixes. * Instead of having FD-STREAM objects directly hold onto input and output buffer SAPs and head/tail indexes, use BUFFER objects which contain the SAP, size of the memory area, head/tail indexes, and are have finalizers to deallocate the system memory assosicated with the SAP. (This fixes system memory leaks when streams are not properly closed.) * Make CLOSE :ABORT release the output queue associated with the stream. (This was another memory leak in the old system: now the finalizers make not doing this safe, but it's still better to recycle the buffers.) * Slightly reduce lock contention by grabbing the *AVAILABLE-BUFFERS* lock only if there is something there right before the lock is taken, and by doing allocation outside the lock. * Rename and refactor FROB-OUTPUT and friends: BUFFER-OUTPUT is the main interface function, which always adds new output to the current buffer / output queue. WRITE-OR-BUFFER-OUTPUT tries to write immediately, falling back to buffering if writing is not possible. WRITE-OUTPUT-FROM-QUEUE is called by the SERVE-EVENT system to deal with output queue. FLUSH-OUTPUT-BUFFER writes the current buffer out if possible, queues it otherwise. Ensures that the output buffer of the stream is empty on return (and returns that buffer). * Deprecate SB-SYS:OUTPUT-RAW-BYTES. There doesn't seem to be any real reason to export this kind of stuff. * Increment the fasl version. Index: NEWS =================================================================== RCS file: /cvsroot/sbcl/sbcl/NEWS,v retrieving revision 1.1230 retrieving revision 1.1231 diff -u -d -r1.1230 -r1.1231 --- NEWS 27 Jul 2007 12:09:10 -0000 1.1230 +++ NEWS 6 Aug 2007 11:50:46 -0000 1.1231 @@ -1,9 +1,15 @@ ;;;; -*- coding: utf-8; -*- changes in sbcl-1.0.9 relative to sbcl-1.0.8: + * minor incompatible change: SB-SYS:OUTPUT-RAW-BYTES is deprecated. * bug fix: new compiler transforms for MEMBER and ASSOC were affected by printer control variables. (reported by Dan Corkill) * bug fix: system leaked memory when delayed output was performed by the OS in smaller chunks then expected. (thanks to David Smith) + * bug fix: system leaked memory when file streams were not closed + properly. + * bug fix: large objects written to slow streams that were modified + after the write could end up with the modified state written to + the underlying file descriptor. changes in sbcl-1.0.8 relative to sbcl-1.0.7: * enhancement: experimental macro SB-EXT:COMPARE-AND-SWAP provides Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.3540 retrieving revision 1.3541 diff -u -d -r1.3540 -r1.3541 --- version.lisp-expr 4 Aug 2007 14:49:32 -0000 1.3540 +++ version.lisp-expr 6 Aug 2007 11:50:46 -0000 1.3541 @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.8.15" +"1.0.8.16" |