Add ASAN and MSAN instrumentation for arena and mjData stack.
PiperOrigin-RevId: 535635490 Change-Id: Ia1e58771bae25bf72c861f57452fb8faa2b918fb
This commit is contained in:
committed by
Copybara-Service
parent
1d79657512
commit
f887c1e928
+10
-1
@@ -56,6 +56,14 @@ General
|
||||
between the two extremal values given by the `Millard et al. (2013) <https://doi.org/10.1115/1.4023390>`__ muscle
|
||||
model, within a range of width tausmooth. See :ref:`Muscle actuators<CMuscle>` for more details.
|
||||
Relatedly, :ref:`mju_muscleDynamics` now takes 3 parameters instead of 2, adding the new smoothing-width parameter.
|
||||
- Moved public C macro definitions out of mujoco.h into a new public header file called
|
||||
`mjmacro.h <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjmacro.h>`__. The new file
|
||||
is included by mujoco.h so this change does not break existing user code.
|
||||
- Added instrumentation for the `Address Sanitizer (ASAN) <https://clang.llvm.org/docs/AddressSanitizer.html>`__ and
|
||||
`Memory Sanitizer (MSAN) <https://clang.llvm.org/docs/MemorySanitizer.html>`__ to detect memory bugs when allocating
|
||||
from the ``mjData`` stack and arena.
|
||||
- Removed ``pstack`` and ``parena`` from the output of ``mj_printData``, since these are implementation details of the
|
||||
``mjData`` allocators that are affected by diagnostic paddings in instrumented builds.
|
||||
|
||||
.. youtube:: hqIMTNGaLF4
|
||||
:align: right
|
||||
@@ -553,7 +561,8 @@ General
|
||||
#. ``mju_rotVecMat`` and ``mju_rotVecMatT`` now support in-place multiplication.
|
||||
#. ``mjData.ctrl`` values are no longer clamped in-place, remain untouched by the engine.
|
||||
#. Arrays in mjData's buffer now align to 64-byte boundaries rather than 8-byte.
|
||||
#. Added memory poisoning when building with Address Sanitizer (ASAN) and Memory Sanitizer (MSAN). This allows ASAN to
|
||||
#. Added memory poisoning when building with `Address Sanitizer (ASAN) <https://clang.llvm.org/docs/AddressSanitizer.html>`__
|
||||
and `Memory Sanitizer (MSAN) <https://clang.llvm.org/docs/MemorySanitizer.html>`__. This allows ASAN to
|
||||
detect reads and writes to regions in ``mjModel.buffer`` and ``mjData.buffer`` that do not lie within an array, and
|
||||
for MSAN to detect reads from uninitialised fields in ``mjData`` following ``mj_resetData``.
|
||||
#. Added a `slider-crank example model <https://github.com/deepmind/mujoco/tree/main/model/slider_crank>`_.
|
||||
|
||||
@@ -136,7 +136,7 @@ links below, to make this documentation self-contained.
|
||||
|
||||
mujoco.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mujoco.h>`__
|
||||
This is the main header file and must be included in all programs using MuJoCo. It defines all API functions and
|
||||
global variables, and includes the next 5 files which provide the necessary type definitions.
|
||||
global variables, and includes the all other header files except mjxmacro.h.
|
||||
mjmodel.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjmodel.h>`__
|
||||
Defines the C structure :ref:`mjModel` which is the runtime representation of the
|
||||
model being simulated. It also defines a number of primitive types and other structures needed to define mjModel.
|
||||
@@ -152,6 +152,8 @@ mjui.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoc
|
||||
Defines the primitive types and structures needed by the UI framework.
|
||||
mjtnum.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjtnum.h>`__
|
||||
Defines MuJoCo's ``mjtNum`` floating-point type to be either ``double`` or ``float``. See :ref:`mjtNum`.
|
||||
mjmacro.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjmacro.h>`__
|
||||
Defines C macros that are useful in user code.
|
||||
mjxmacro.h `(source) <https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjxmacro.h>`__
|
||||
This file is optional and is not included by mujoco.h. It defines :ref:`X Macros <tyXMacro>` that can
|
||||
automate the mapping of mjModel and mjData into scripting languages, as well as other operations that require
|
||||
|
||||
Reference in New Issue
Block a user