Re: with-foreign-object allocation question

Martin Simmons <[email protected]> Fri, 10 Apr 2026 15:42:27 +0100
Newsgroups gmane.lisp.lispworks.general
Message-ID <[email protected]>
Yes, that's correct.  Moreover, the LW with-dynamic-foreign-objects/alloca
stack is separate from the main control stack, so will only be overwritten by
other dynamic allocation nested inside this form (or later in the same thread
if it is used after the end of its dynamic scope).

-- 
Martin Simmons
LispWorks Ltd
http://www.lispworks.com/



>>>>> On Fri, 10 Apr 2026 12:41:08 +0100, Tim Bradshaw (as tfb at cley dot com) said:
> 
> If LW's alloca is like C's, then presumably the thing is on the stack and is probably 'legal' until something else overwrites it with probably-bad results?
> 
> --tim
> 
> > On 10 Apr 2026, at 09:51, Madhu (as enometh at meer dot net) <[email protected]> wrote:
> > 
> > sorry for the immediate followup:
> > 
> > actuallythere is a another deeper problem because ARGS may be used
> > after it is freed, it really should be allocated and not freed, but
> > that is not the point of failure in other lisps, or on lispworks,
> > 
> > *  In  <[email protected]>
> > I wrote on Fri, 10 Apr 2026 14:08:38 +0530 (IST)
> > 
> >> I am trying to fix a lethal memory bug in
> >> https://github.com/StjepanPoljak/musicli src/jack.c: (start-jack-callbacks)
> >> where there is a call
> >> 
> >>  (cffi:with-foreign-object (args '(:pointer (:struct jack-cb-args)))
> >>     ... clobber 24 bytes == (sizeof (:struct jack-cb-args))
> >>        allocated at ARGS ...)
> >> 
> >> which should really read
> >> 
> >>  (cffi:with-foreign-object '(:struct jack-cb-args) ...)
> >> 
> >> this reliably crashes other lisps, but not lwl 64 personal.  what
> >> could be the reason for this resiliance? macroexpansion on the
> >> incorrect form shows
> >> 
> >> (fli:with-dynamic-foreign-objects nil
> >>  (let* ((#:size6844 8)
> >>         (args (fli:alloca :type :byte :nelems #:size6844)))
> >> 
> >> Which shows only 8 bytes being allocated. but are allocations aligned
> >> at > 24byte offsets, so the memory corruption doesn't show up in
> >> lispworks in this case?
> >> 
> >> -- Madhu
> >> 
> >> (project author bcc'd)
> > 
> > _______________________________________________
> > Lisp Hug - the mailing list for LispWorks users
> > [email protected]
> > http://www.lispworks.com/support/lisp-hug.html
> 
> _______________________________________________
> Lisp Hug - the mailing list for LispWorks users
> [email protected]
> http://www.lispworks.com/support/lisp-hug.html
> 

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
[email protected]
http://www.lispworks.com/support/lisp-hug.html