Auburn / FastNoise2

Modular node graph based noise generation library using SIMD, C++17 and templates
MIT License
1.02k stars 107 forks source link

Segfault with MinGW on Windows #69

Open Aurailus opened 3 years ago

Aurailus commented 3 years ago

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.

Auburn commented 3 years ago

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?

SamCZ commented 3 years ago

image

SamCZ commented 3 years ago

This will happen even on clean clone of repo image

Auburn commented 3 years ago

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

SamCZ commented 3 years ago

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

Auburn commented 3 years ago

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

SamCZ commented 3 years ago

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

Auburn commented 3 years ago

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

Auburn commented 6 months ago

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

PaoDerDoktor commented 3 months ago

Hi ! Just to confirm, this still segfaults on master branch (using MinGw with GNU 13.2.0) :)

This will happen even on clean clone of repo image

Auburn commented 3 months ago

Could you test the NewFastSIMD branch, I may have fixed it on there

IlaPoly commented 1 month ago

For #142 I was using NewFastSIMD so it didn't fix it for me.

Auburn commented 1 month ago

Are you sure, the arguments in GenUniform3D suggest you are using the master branch

IlaPoly commented 1 month ago

Yes, I just rebuild the library from NewFastSIMD branch and the GenUniform3D still takes the same argument.