Heisenbug involving Destructors & GC - Help Needed
Maxime Chevalier-Boisvert via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jun 26 11:27:33 PDT 2015
I seem to have run into a heisenbug involving destructors and the
GC. I'm kind of stuck at this point and need help tracking down
the issue.
I put the broken code in a branch called heisenbug on github:
https://github.com/higgsjs/Higgs/tree/heisenbug
The problem manifests itself on runs of `make test` (my
unittests), but only some of the time. I wrote a script to run
`make test` repeatedly to try and find a solution:
https://github.com/higgsjs/Higgs/blob/heisenbug/source/repeatmaketest.py
The problem usually manifests itself after 5 to 15 runs on my
machine. I get a segmentation fault, not always in the same
place. The randomness seems to stem from address space
randomization.
It seems the issue is caused by my freeing/reinitializing the VM
during unit tests. More specifically, commenting out this line
makes the problem go away:
https://github.com/higgsjs/Higgs/blob/heisenbug/source/runtime/vm.d#L741
Higgs can run all of my benchmarks without ever failing, but
restarting the VM during `make test` seems to be causing this
problem to happen. It's not impossible that there could be
another underlying issue, such as the JITted code I generate
corrupting some memory location, but it would seem that if this
were the case, the issue would likely show up outside of unit
tests. Any help would be appreciated.
More information about the Digitalmars-d
mailing list