On Thursday, 24 December 2020 at 16:12:31 UTC, Saurabh Das wrote:
This causes a segfault when run with rdmd -gx:
*snip*

First, here's a reduced version:

void main() {
        import std.experimental.allocator: allocatorObject, expandArray;
import std.experimental.allocator.building_blocks.allocator_list: AllocatorList;
        import std.experimental.allocator.building_blocks.region: Region;
import std.experimental.allocator.building_blocks.fallback_allocator: FallbackAllocator;
        import std.experimental.allocator.mallocator: Mallocator;
        import core.memory: GC;
        import std.stdio;

        enum MB = 1024 * 1024;

        {
                alias Alloc1 = FallbackAllocator!(
                                AllocatorList!(n => Region!Mallocator(MB)),
                                Mallocator);
                auto alloc1 = allocatorObject(Alloc1());

                GC.collect;
                alloc1.allocate(MB);
        }
        
writeln(5); // this never gets printed; segfault happens upon exiting the above scope
}


I'm not 100% sure where the segfault comes from--though I think it's a problem with AllocatorList--but as a workaround, try replacing ‘AllocatorList!(n => Region!Mallocator(MB))’ with ‘AllocatorList!(n => Region!Mallocator(MB), NullAllocator)’.

Reply via email to