[Issue 14336] New: Invalid memory access in struct destructor in std.uni
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Mar 25 07:40:08 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=14336
Issue ID: 14336
Summary: Invalid memory access in struct destructor in std.uni
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: Phobos
Assignee: nobody at puremagic.com
Reporter: thecybershadow at gmail.com
CC: blah38621 at gmail.com, dmitry.olsh at gmail.com
Created attachment 1495
--> https://issues.dlang.org/attachment.cgi?id=1495&action=edit
Valgrind log
Valgrind (with my Valgrind branch [1]) reports an incorrect memory access in
std.uni.CowArray destructors (see attachment).
It looks like the following happens:
- The destructor is finalizing a heap-allocated array of InversionList!GcPolicy
structs.
- InversionList doesn't have a destructor, but it has a CowArray field
("data"). CowArray has a destructor, so one is automatically generated for
InversionList.
- CowArray!GcPolicy.~this calls the refCount @property.
- The refCount @property attempts to refer to the heap-allocated (via GcPolicy)
uint[] data field, which has already been destroyed by the GC. As I understand,
this is an invalid memory access.
[1]:
https://github.com/CyberShadow/druntime/compare/pull-20150323-233811-gc-debug...valgrind
--
More information about the Digitalmars-d-bugs
mailing list