[Issue 3523] [GC] Fiber is not garbage collected properly

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Apr 24 20:43:57 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=3523

Steven Schveighoffer <schveiguy at yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |schveiguy at yahoo.com

--- Comment #15 from Steven Schveighoffer <schveiguy at yahoo.com> ---
This is pretty old, but I wonder if it's still broken?

>From this recent thread, it may already be fixed, as peppering in GC
collections seems to solve the problem:

https://forum.dlang.org/post/vfqvmyossdcqadgassbr@forum.dlang.org

I was coming to file a bug on this, but this seems (at least) to be close to
explaining what is happening.

Note that we have a separate issue with Fibers and GC. The GC only associates a
small block with the Fiber -- the Fiber object itself, whereas the stack is
huge comparatively. In 32-bit windows, a fiber stack is default 32k. This means
that 10,000 Fibers probably takes up 1.2MB in the GC (assuming 128 bytes per
fiber), but the stack space is 320MB. There is a lack of correlation here
between memory pressure and when the memory should be cleaned up.

Would it be possible to deallocate the stack when the Fiber terminates vs. when
it's GC'd? That would at least help with Fibers that are completed and just
left for garbage.

--


More information about the Digitalmars-d-bugs mailing list