May 23, 2013
http://bugzilla.gdcproject.org/show_bug.cgi?id=54

             Bug #: 54
           Summary: GC corruption of TLS memory
    Classification: Unclassified
           Product: GDC
           Version: development
          Platform: x86_64
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: Normal
         Component: gdc
        AssignedTo: ibuclaw@gdcproject.org
        ReportedBy: pdewacht@gmail.com


This occured while trying to get Debian's val-and-rick package to work with GDC trunk. When compiling the package with the -O flag, I got the following memory layout:

(gdb) p &_tlsstart
$18 = (<thread local variable, no debug info> *) 0x7ffff7ef07c4
(gdb) p &_tlsend
$19 = (<thread local variable, no debug info> *) 0x7ffff7ef0f38
(gdb) find &_tlsstart, &_tlsend, 'abagames.vr.shape.BitmapShape.letters()'
0x7ffff7ef0878

Note that _tlsstart is not aligned on an 8-byte boundary. The GC's mark routine walks from _tlsstart to _tlsend in pointer-sized (8 byte) steps, so it misses all properly aligned pointers in this range. As a result in-use objects such as that BitmapShape instance are deleted.

-- 
Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.