[Issue 6014] rt_finalize Segmentation fault , dmd 2.053 on linux & freebsd

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jul 15 05:54:26 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6014



--- Comment #10 from Steven Schveighoffer <schveiguy at yahoo.com> 2011-07-15 05:49:10 PDT ---
So here is what I can learn from this information:

1. The crash is happening on the final collection cycle when the runtime is
shutting down.
2. The memory block (pointer value 0x7ffff729d000) is marked as having a
finalizer.
3. The memory block being collected does not have a valid classinfo pointer
(which resides at the very beginning of the block), which means either:

  a. It's not really a class, and is incorrectly marked as having a finalizer
or
  b. The pointer has somehow been corrupted.

The issue with a problem like this is, the corruption could happen anywhere.

Given that dtors allocating memory has now been disallowed by 2.054 (a known
cause of corruption), I don't think your code could be doing that.

So that leaves examining your code for incorrect memory operations.  I don't
really have time to look through your code, but I'd recommend looking
suspiciously at things where casts are used, or where you are using raw
pointers.

One other thing is to add (or uncomment) some druntime debug printf statements
-- print out the classinfo name and addresses for memory blocks being
allocated.  That at least should tell you what the *original* type was being
allocated for the failed memory block.  Sometimes this is the only way to debug
such corruption issues.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list