
[LWJGL] 56 bytes leaked, thread 21 (LwjglVulkanContext), address: 0x76982563FEE0
    at org.lwjgl.system.Callback.create(Callback.java:163)
    at org.lwjgl.system.Callback.<init>(Callback.java:113)
    at org.lwjgl.glfw.GLFWWindowSizeCallback.<init>(GLFWWindowSizeCallback.java:55)
    at com.jme3.system.vulkan.LwjglVulkanContext$3.<init>(LwjglVulkanContext.java:129)
    at com.jme3.system.vulkan.LwjglVulkanContext.glfwInitialize(LwjglVulkanContext.java:129)
    at com.jme3.system.vulkan.LwjglVulkanContext.engineInitialize(LwjglVulkanContext.java:85)
    at com.jme3.system.vulkan.LwjglVulkanContext.run(LwjglVulkanContext.java:63)
    at java.base/java.lang.Thread.run(Thread.java:1575)
glfwSetWindowSizeCallback(window, sizeCallback = new GLFWWindowSizeCallback() {
    @Override
    public void invoke(final long window, final int width, final int height) {
        updateSizes();
    }
});
Exception in thread "LwjglVulkanContext" java.lang.IllegalStateException: The memory address specified is not being tracked: 0x75F193FFDC50
	at org.lwjgl.system.MemoryManage$DebugAllocator.untrackAbort(MemoryManage.java:327)
	at org.lwjgl.system.MemoryManage$DebugAllocator.untrack(MemoryManage.java:319)
	at org.lwjgl.system.MemoryManage$DebugAllocator.free(MemoryManage.java:240)
	at org.lwjgl.system.MemoryUtil.nmemFree(MemoryUtil.java:338)
	at org.lwjgl.system.Struct.free(Struct.java:65)
	at org.lwjgl.system.NativeResource.close(NativeResource.java:20)
	at com.jme3.vulkan.VulkanLogger.invoke(VulkanLogger.java:52)
	at org.lwjgl.vulkan.VkDebugUtilsMessengerCallbackEXTI.callback(VkDebugUtilsMessengerCallbackEXTI.java:58)
	at org.lwjgl.system.JNI.callPPPI(Native Method)
	at org.lwjgl.vulkan.VK10.nvkEnumeratePhysicalDevices(VK10.java:3046)
	at org.lwjgl.vulkan.VK10.vkEnumeratePhysicalDevices(VK10.java:3100)
	at com.jme3.vulkan.PhysicalDevice.lambda$getSuitableDevice$4(PhysicalDevice.java:140)
	at com.jme3.renderer.vulkan.VulkanUtils.enumerateBuffer(VulkanUtils.java:49)
	at com.jme3.vulkan.PhysicalDevice.getSuitableDevice(PhysicalDevice.java:139)
	at jme3test.vulkan.VulkanHelperTest.simpleInitApp(VulkanHelperTest.java:117)
	at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:240)
	at com.jme3.system.vulkan.LwjglVulkanContext.engineInitialize(LwjglVulkanContext.java:88)
	at com.jme3.system.vulkan.LwjglVulkanContext.run(LwjglVulkanContext.java:63)
	at java.base/java.lang.Thread.run(Thread.java:1575)
@Override
public int invoke(int messageSeverity, int messageTypes, long pCallbackData, long pUserData) {
    try (VkDebugUtilsMessengerCallbackDataEXT data = VkDebugUtilsMessengerCallbackDataEXT.create(pCallbackData)) {
        Level lvl = getLoggingLevel(messageSeverity);
        if (exceptionThreshold != null && lvl.intValue() >= exceptionThreshold.intValue()) {
            throw new RuntimeException(lvl.getName() + ": " + data.pMessageString());
        } else {
            System.err.println(lvl.getName() + "  " + data.pMessageString());
        }
    } // exception occurs here
    return VK_FALSE;
}
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f114c25933a, pid=93473, tid=93497
#
# JRE version: Java(TM) SE Runtime Environment (23.0.2+7) (build 23.0.2+7-58)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.0.2+7-58, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# C  [libjemalloc.so+0x5933a]
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/codex/java/prj/jmonkeyengine/core.93473)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#
public class VidTexture {
    int w, h, textureId, pbo;
    VidTexture(int w, int h, ByteBuffer buf) {
        this.w = w;
        this.h = h;
        buf.flip();
        pbo = glGenBuffers();
        glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
        glBufferData(GL_PIXEL_UNPACK_BUFFER, w*h*3L, GL_STREAM_DRAW);
        ByteBuffer bb = glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);
        bb.put(buf);
        glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
        textureId = glGenTextures();
        glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
        glBindTexture(GL_TEXTURE_2D, textureId);
        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w,
                h, 0, GL_BGR, GL_UNSIGNED_BYTE, 0);
        glGenerateMipmap(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, -1);
        glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
        buf.clear();
    }
    //Here is cleanUp and bind functions
}
private static final class GlfwKeyListener implements GLFWKeyCallbackI {
    private int key;
    @Override
    public void invoke(long window, int key, int scancode, int action, int mods) {
        KeyClass.key = key;
        //schedule to set key to 0 on next frame
    }
}
private void logUsedKeys() {
    int key = KeyClass.key;
    if (key != 0) {
        LOGGER.info("Key {}", key);
    }
}