bindbc-opengl icon indicating copy to clipboard operation
bindbc-opengl copied to clipboard

Segfault Crash in WSLg starting from 1.0.1 (not present in 1.0.0)

Open mintyfresh opened this issue 2 years ago • 1 comments

When using bindbc-opengl 1.0.1 or 1.0.2 in WSL (using WSLg), calling loadOpenGL causes the program to crash without a stacktrace. Reverting back to 1.0.0 prevents this issue.

Sample Code to Reproduce

import std.stdio;

import bindbc.glfw;
import bindbc.opengl;

void main()
{
    prepareGLFW();

    assert(glfwInit(), "Failed to init GLFW");
    scope (exit) glfwTerminate();

    GLFWwindow* window = glfwCreateWindow(800, 600, "Test", null, null);
    assert(window, "Failed to create a GLFW window");

    glfwMakeContextCurrent(window);

    prepareOpenGL();

    while (!glfwWindowShouldClose(window))
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
}

private void prepareGLFW()
{
    auto result = loadGLFW();

    if (result != glfwSupport)
    {
        writeln("Result: ", result);
        writeLoadErrors();

        assert(0, "Failed to load GLFW");
    }

    writeln("GLFW loaded: ", result);
}

private void prepareOpenGL()
{
    auto result = loadOpenGL();

    if (result < GLSupport.gl31)
    {
        writeln("Result: ", result);
        writeLoadErrors();

        assert(0, "Failed to load OpenGL");
    }

    writeln("OpenGL loaded: ", result);
}

private void writeLoadErrors()
{
    import std.string : fromStringz;
    import loader = bindbc.loader.sharedlib;

    foreach (error; loader.errors)
    {
        writefln("Error(%s): %s", error.error.fromStringz, error.message.fromStringz);
    }
}

dub.sdl configuration:

dependency "bindbc-freetype" version="~>1.0.3"
dependency "bindbc-glfw" version="~>1.0.1"
dependency "bindbc-opengl" version="~>1.0.2"
versions "GLFW_31" "GL_31"

Expected Output:

Performing "debug" build using /usr/bin/dmd for x86_64.
bindbc-loader 1.0.1: target for configuration "noBC" is up to date.
bindbc-freetype 1.0.3: target for configuration "dynamic" is up to date.
bindbc-glfw 1.0.1: target for configuration "dynamic" is up to date.
bindbc-opengl 1.0.0: target for configuration "dynamic" is up to date.
minuette ~master: building configuration "application"...
Linking...
To force a rebuild of up-to-date targets, run again with --force.
Running minuette
GLFW loaded: glfw31
OpenGL loaded: gl31

A blank window opens and remains until closed by the user. This is the behaviour in 1.0.0.

Actual Output

Performing "debug" build using /usr/bin/dmd for x86_64.
bindbc-loader 1.0.1: target for configuration "noBC" is up to date.
bindbc-freetype 1.0.3: target for configuration "dynamic" is up to date.
bindbc-glfw 1.0.1: target for configuration "dynamic" is up to date.
bindbc-opengl 1.0.1: building configuration "dynamic"...
minuette ~master: building configuration "application"...
Linking...
To force a rebuild of up-to-date targets, run again with --force.
Running minuette
GLFW loaded: glfw31
Program exited with code -11

Hardware and Environment Information

WSL Ubuntu 20.04.3 LTS (inside of Windows 11 Pro Build 22000.708) DUB version 1.26.1, built on Jul 22 2021 DMD64 D Compiler v2.097.2

GLXInfo
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Microsoft Corporation (0xffffffff)
    Device: D3D12 (Intel(R) Iris(R) Xe Graphics) (0xffffffff)
    Version: 21.2.6
    Accelerated: yes
    Video memory: 32787MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL vendor string: Microsoft Corporation
OpenGL renderer string: D3D12 (Intel(R) Iris(R) Xe Graphics)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 21.2.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

mintyfresh avatar Jul 03 '22 21:07 mintyfresh

Sorry, I missed this entirely. I had never considered testing this in WSL. I'm on Windows 10, but I'll see if I can reproduce it.

mdparker avatar Oct 04 '22 00:10 mdparker

Can you please confirm whether this issue still occurs in v1.0.5?

ichordev avatar Feb 26 '23 03:02 ichordev