From 89f47c33e45c81ff5b8471432c2d39194ed47143 Mon Sep 17 00:00:00 2001 From: Saran Tunyasuvunakool Date: Fri, 1 Sep 2023 17:56:43 -0700 Subject: [PATCH] Fix mjData stack frame leakages. PiperOrigin-RevId: 562091591 Change-Id: Ia7bb8a70ccba6bd40edc06ad8ebfac16e4286836 --- src/engine/engine_core_constraint.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/engine/engine_core_constraint.c b/src/engine/engine_core_constraint.c index c96a67a7..7401be26 100644 --- a/src/engine/engine_core_constraint.c +++ b/src/engine/engine_core_constraint.c @@ -920,12 +920,13 @@ void mj_instantiateContact(const mjModel* m, mjData* d) { int dim, b1, b2, NV = m->nv, *chain = NULL; mjContact* con; mjtNum cpos[6], cmargin[6], *jac, *jacdifp, *jacdifr, *jac1p, *jac2p, *jac1r, *jac2r; - mjMARKSTACK; if (mjDISABLED(mjDSBL_CONTACT) || ncon == 0) { return; } + mjMARKSTACK; + // allocate Jacobian jac = mj_stackAllocNum(d, 6*NV); jacdifp = mj_stackAllocNum(d, 3*NV); @@ -1831,13 +1832,14 @@ void mj_makeConstraint(const mjModel* m, mjData* d) { // compute efc_AR void mj_projectConstraint(const mjModel* m, mjData* d) { int nefc = d->nefc, nv = m->nv; - mjMARKSTACK; // nothing to do if (nefc == 0 || !mj_isDual(m)) { return; } + mjMARKSTACK; + // space for backsubM2(J')' and its traspose mjtNum* JM2 = mj_stackAllocNum(d, nefc*nv); mjtNum* JM2T = mj_stackAllocNum(d, nv*nefc);