[phobos] Variant broken for large types

Sean Kelly sean at invisibleduck.org
Fri Jun 18 21:51:10 PDT 2010


Variant hurts my brain.  Something's screwy with using large values (ones that dynamic storage is allocated for automatically) but I haven't figured out what yet.  Help?


    import std.variant;
    import std.typecons;
    import std.stdio;

    void main()
    {
        struct Large
        {
            int[1024] x;
        }
        Large large;
        Variant v = large;
        if( v.convertsTo!(Large) )
            writeln( "yay" );
    }

(gdb) run
Starting program: /Users/sean/Projects/3p/test/vtest 
Reading symbols for shared libraries +. done

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00002754 in D3std7variant17__T8VariantNVk32Z8VariantN24__T7handlerTSmain5LargeZ7handlerFE3std7variant17__T8VariantNVk32Z8VariantN4OpIDPG32hPvZi6getPtrFPvZPSmain5Large ()
(gdb) bt
#0  0x00002754 in D3std7variant17__T8VariantNVk32Z8VariantN24__T7handlerTSmain5LargeZ7handlerFE3std7variant17__T8VariantNVk32Z8VariantN4OpIDPG32hPvZi6getPtrFPvZPSmain5Large ()
#1  0x000023c5 in D3std7variant17__T8VariantNVk32Z8VariantN24__T7handlerTSmain5LargeZ7handlerFE3std7variant17__T8VariantNVk32Z8VariantN4OpIDPG32hPvZi ()
#2  0x000032e8 in D3std7variant17__T8VariantNVk32Z8VariantN28__T10convertsToTSmain5LargeZ10convertsToMFZb ()
#3  0x000022a1 in _Dmain ()
#4  0x0000e92f in D2rt6dmain24mainUiPPaZi7runMainMFZv ()
#5  0x0000e866 in D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv ()
#6  0x0000e972 in D2rt6dmain24mainUiPPaZi6runAllMFZv ()
#7  0x0000e866 in D2rt6dmain24mainUiPPaZi7tryExecMFMDFZvZv ()
#8  0x0000e7f4 in main ()
(gdb) 



More information about the phobos mailing list