FastNoise2 icon indicating copy to clipboard operation
FastNoise2 copied to clipboard

Segfault with MinGW on Windows

Open Aurailus opened this issue 2 years ago • 9 comments

Hi! I'm encountering a strange issue with FastNoise2 on windows. When trying to call GenSingle3D on a FractalFBm module, a segfault occurs. This behaviour is present in the latest commit as well as the last release, and we managed to replicate it with just the following code, which should segfault at the GenSingle3D call:

int main(int argc, char* argv[]) {
    auto biomePerlin = FastNoise::New<FastNoise::Simplex>();
    
    auto biomeScale = FastNoise::New<FastNoise::DomainScale>();
    biomeScale->SetSource(biomePerlin);
    biomeScale->SetScale(1/1000.f);
    
    auto biomeFractal = FastNoise::New<FastNoise::FractalFBm>();
    biomeFractal->SetSource(biomePerlin);
    
    float val = biomeFractal->GenSingle3D(0, 0,0, 1337);
    
    std::cout << val << std::endl;
}

Compiled with C++17, MinGW on Windows.

Aurailus avatar Sep 03 '21 22:09 Aurailus

I have not tested MinGW on Windows, only MSVC and ClangCL. The code above works on latter 2 compilers.

Can you give any more details on the crash?

Auburn avatar Sep 03 '21 23:09 Auburn

image

SamCZ avatar Sep 03 '21 23:09 SamCZ

This will happen even on clean clone of repo image

SamCZ avatar Sep 03 '21 23:09 SamCZ

Well that doesn't look like a simple fix, I'll put MinGW support on my ToDo list but I'm busy with a few other tasks currently. If you want to look into it further yourself I'm happy to provide some guidance, probably best to do that over Discord chat though

Auburn avatar Sep 03 '21 23:09 Auburn

ok, I will look into it, my discord is: Sam Freki#9144

SamCZ avatar Sep 03 '21 23:09 SamCZ

There is a FastNoise Discord

Another option is to compile it as a DLL using one of the supported compilers and use it via the C interface, but that's not an ideal solution

Auburn avatar Sep 03 '21 23:09 Auburn

Yeah and its weird that the segfault is only present on some generators

SamCZ avatar Sep 03 '21 23:09 SamCZ

MinGW does not support AVX code on Windows https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412

Auburn avatar Oct 18 '21 10:10 Auburn

I just tried to test this, I didn't seem to get the segfault. Not sure if it's been fixed? The bug report linked above is still open.

I'm testing on GNU 13.1.0

Auburn avatar Apr 27 '24 13:04 Auburn