The attached simple example A-Frame/Ammo scene has a kinematic parent and dynamic child, with functions (to type into the browser console) to attach (add lock constraint), detach (remove constraint), and move the kinematic parent. Running in Chrome on Windows 10, if physics has moved the dynamic child since loading the HTML, the attach() throws a memory fault at Ammo.destroy(bodyTransform) near the end of the ammo-constraint component createConstraint function.
e.g.
move() (pushes unattached child away) then attach()
throws the fault, while
attach(), move(), move(), detach(), move(), attach() (where the child only moves when attached)
works
The bodyTransform that is destroyed is set near the top of that function:
const bodyTransform = body.getCenterOfMassTransform().inverse().op_mul(targetBody.getWorldTransform());
Does that allocate, or should the function not be destroying it?
If I duplicate the logic of createConstraint() but leave out Ammo.destroy(bodyTransform), (and disable deactivation on child) it seems to work fine. Hopefully not leaking memory.
(Posted to https://github.com/kripken/ammo.js/issues/421 but I guess this is the new active home?)
The attached simple example A-Frame/Ammo scene has a kinematic parent and dynamic child, with functions (to type into the browser console) to attach (add lock constraint), detach (remove constraint), and move the kinematic parent. Running in Chrome on Windows 10, if physics has moved the dynamic child since loading the HTML, the attach() throws a memory fault at Ammo.destroy(bodyTransform) near the end of the ammo-constraint component createConstraint function.
e.g. move() (pushes unattached child away) then attach() throws the fault, while attach(), move(), move(), detach(), move(), attach() (where the child only moves when attached) works
The bodyTransform that is destroyed is set near the top of that function: const bodyTransform = body.getCenterOfMassTransform().inverse().op_mul(targetBody.getWorldTransform()); Does that allocate, or should the function not be destroying it?
If I duplicate the logic of createConstraint() but leave out Ammo.destroy(bodyTransform), (and disable deactivation on child) it seems to work fine. Hopefully not leaking memory.
Thank you.
crash.html.txt