On Wed, 12 Nov 2014 12:40:30 +0000 Chris via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
> The following causes the DLL to crash on Windows: > > Input: immutable(short)* data (immutable because in separate > thread). > // Later > core.stdc.stdlib.free(cast(short *)data); > > (short* data is provided by the C library, where the memory is > allocated) > > On Linux it works fine and never crashes, in the Windows DLL it > randomly causes an access violation in memory (both read and > write). Note that it doesn't crash immediately, it goes on for a > while, but sooner or later it crashes. If I comment out this > line, everything works fine. However, if I don't free the memory, > I'll have a memory leak. Any hints/advice/guesses? seems that you are using two different allocators here. one is that comes with DLL and other that comes with D. i bet they either using different runtimes, or C runtime is doesn't know about another C runtime in DLL. on GNU/Linux there is only one runtime (most of the time), so there is no problem with different allocators.
signature.asc
Description: PGP signature