From: Bram Geron (via RT) <[EMAIL PROTECTED]>
   Date: Sun, 01 Jul 2007 03:53:50 -0700

   # New Ticket Created by  Bram Geron 
   # Please include the string:  [perl #43462]
   # in the subject line of all future correspondence about this issue. 
   # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43462 >

   . . .

   Secondly, I discovered that when you're using -D80, Parrot_free_context
   prints out the name of the 'sub' that the context was made for. I think
   we can't rely on the sub being there, as this example will show:

   - Create closure A over main.
   - Invoke closure A, creating context B.
     - Create closure C over closure A, storing a ref to context B (but not
       to closure A). Store it in a global var maybe.
   - Exit closure A. There is one less reference to context B.
   - Empty the global var holding closure C.
   - Free closure C. Now context B can be freed too:
     [free  ctx 0x12345678 of sub '<accessing freed memory here>']

   I got a segfault for it, but my test case is too large to attach and I
   think it will be hard to get the size down. It isn't very legible anyway.

I think you will have to send me your test case, or at least a more
detailed recipe.  I do not see how the above sequence of events can lead
to a dangling reference to a deleted sub -- unless there is also a GC
bug, in which case I am unlikely to be able to reproduce the problem
from just a description.

   If this is really a GC problem, then you may be able to get your test
case smaller by inserting "sweep 1" shortly before the point that it
fails.  HTH,

                                        -- Bob

Reply via email to