thirdroom icon indicating copy to clipboard operation
thirdroom copied to clipboard

WebSG - disposal leak upon certain script errors

Open NateTheGreatt opened this issue 2 years ago • 0 comments

reproducing script:

world.onenter = () => {
  const scene = world.environment;

  const boxNode = world.createNode({
    mesh: world.createBoxMesh({
      size: [1, 1, 1],
      segments: [1, 1, 1],
      material: world.createMaterial({
        baseColorFactor: [1, 1, 1, 1],
      }),
    }),
    collider: world.createCollider({ type: "box", size: [1, 1, 1] }),
  });
  
  boxNode.addPhysicsBody({ type: WebSG.PhysicsBodyType.Kinematic });

  // cause the script to error out before the node is added to the scene 
  boxNode.notAFunction();
  
  scene.addNode(boxNode);
};

By causing the script to error out before the node is added to the scene, a detached physics body is created that never gets disposed of, even when switching worlds.

NateTheGreatt avatar May 04 '23 20:05 NateTheGreatt