On Monday, 5 September 2016 at 17:33:17 UTC, pineapple wrote:
I have a program which I have stripped down to a single
offending line which, when present in my program, causes an
invalid memory operation to occur after main has evaluated:
import mach.sdl.window;
void main(){
auto win = new Window(300, 300);
}
The program is a bit larger than that, but I do not get the
error when I comment out that instantiation and the things
dependent on it.
I commented out the body of the constructor that is being
called, and I still get the error.
Am I missing something or is this an obnoxious bug with the GC?
InvalidMemoryOperationError is raised when you try to allocate
memory inside a destructor called by the GC. I see from your
repository that the destructor of Window uses a function called
log defined by yourself. That function uses writeln internally.
writeln is not @nogc, so it may be that that call to log in the
destructor is actually allocating memory.