From: Nikodemus S. <de...@us...> - 2007-09-06 13:36:48
|
Update of /cvsroot/sbcl/sbcl/src/compiler/generic In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv27898/src/compiler/generic Modified Files: objdef.lisp Log Message: 1.0.9.39: thread stack memory leaks * Since 1.0.9.30 we pad & align the per-thread areas after allocation -- but we need to still pass the original address and size to os_invalidate(), or else we leak. * Also refactor the freeable_thread_stack stuff slightly for less OAOOM. * Whitespace in tests. Index: objdef.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/objdef.lisp,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- objdef.lisp 16 Jul 2007 16:52:53 -0000 1.54 +++ objdef.lisp 6 Sep 2007 13:36:23 -0000 1.55 @@ -374,6 +374,11 @@ ;; of a symbol is initialized to zero (no-tls-value-marker) (os-thread :c-type "volatile os_thread_t") + ;; This is the original address at which the memory was allocated, + ;; which may have different alignment then what we prefer to use. + ;; Kept here so that when the thread dies we can releast the whole + ;; memory we reserved. + (os-address :c-type "void *" :length #!+alpha 2 #!-alpha 1) (binding-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1) (binding-stack-pointer :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1) (control-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1) |