Skip to content

Crash of candlewick-visualizer and Metal assertion on macOS (Apple M4) #97

@oomcth

Description

@oomcth

Environment

  • Device: MacBook Pro (M4)
  • OS: macOS Sequoia (15.7.2)
  • Python: 3.12.12 (conda-forge)
  • CMake build: réussi
(candle) *[main][~/Desktop/candlewick/build]$ cmake ..
CMake Warning (dev) at cmake/release.cmake:138:
  Syntax Warning in cmake code at column 47

  Argument not separated from preceding token by whitespace.
Call Stack (most recent call first):
  cmake/base.cmake:173 (include)
  CMakeLists.txt:35 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at cmake/release.cmake:160:
  Syntax Warning in cmake code at column 53

  Argument not separated from preceding token by whitespace.
Call Stack (most recent call first):
  cmake/base.cmake:173 (include)
  CMakeLists.txt:35 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at cmake/release.cmake:177:
  Syntax Warning in cmake code at column 63

  Argument not separated from preceding token by whitespace.
Call Stack (most recent call first):
  cmake/base.cmake:173 (include)
  CMakeLists.txt:35 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring "candlewick" (https://github.com/Simple-Robotics/candlewick)
-- Package version (git describe): 0.10.0-7-gb71d6
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Failed to find Doxygen, documentation will not be generated.
-- coal FOUND. coal at /Users/mathisscheffler/miniconda3/envs/candle/lib/libcoal.dylib
-- Default C++ standard: 202002
-- C++ standard sufficient: Minimal required 14, currently defined: 20
-- Looking for FFmpeg with components avformat avcodec swscale avutil
--   - found component avformat
--   - found component avcodec
--   - found component swscale
--   - found component avutil
-- FFmpeg version header is at /Users/mathisscheffler/miniconda3/envs/candle/include/libavutil/ffversion.h
-- pinocchio_default FOUND. pinocchio_default at /Users/mathisscheffler/miniconda3/envs/candle/lib/libpinocchio_default.dylib
-- pinocchio_parsers FOUND. pinocchio_parsers at /Users/mathisscheffler/miniconda3/envs/candle/lib/libpinocchio_parsers.dylib
-- pinocchio_casadi FOUND. pinocchio_casadi at /Users/mathisscheffler/miniconda3/envs/candle/lib/libpinocchio_casadi.dylib
-- pinocchio_extra FOUND. pinocchio_extra at /Users/mathisscheffler/miniconda3/envs/candle/lib/libpinocchio_extra.dylib
-- qhullcpp FOUND. qhullcpp at /opt/homebrew/lib/libqhullcpp.a
-- Looking for sdformat14 -- found version 14.8.0
-- Searching for dependencies of sdformat14
-- Checking for module 'tinyxml2'
--   Found tinyxml2, version 11.0.0
-- Looking for dlfcn.h - found
-- Looking for libdl - found
-- Looking for gz-math7 -- found version 7.5.2
-- Searching for dependencies of gz-math7
-- Looking for gz-utils2 -- found version 2.2.1
-- Searching for dependencies of gz-utils2
-- Looking for gz-utils2 -- found version 2.2.1
-- Searching for dependencies of gz-utils2
-- Searching for <gz-utils2> component [cli]
-- Looking for gz-utils2-cli -- found version 2.2.1
-- Searching for dependencies of gz-utils2-cli
CMake Warning at /Users/mathisscheffler/miniconda3/envs/candle/lib/cmake/hpp-fcl/hpp-fclConfig.cmake:3 (message):
  Please update your CMake from 'hpp-fcl' to 'coal'
Call Stack (most recent call first):
  /Users/mathisscheffler/miniconda3/envs/candle/share/cmake-4.2/Modules/CMakeFindDependencyMacro.cmake:93 (find_package)
  /Users/mathisscheffler/miniconda3/envs/candle/share/cmake-4.2/Modules/CMakeFindDependencyMacro.cmake:125 (__find_dependency_common)
  /Users/mathisscheffler/miniconda3/envs/candle/lib/cmake/pinocchio/pinocchioConfig.cmake:167 (find_dependency)
  cmake/package-config.cmake:114 (find_package)
  CMakeLists.txt:112 (ADD_PROJECT_DEPENDENCY)


-- C++ standard sufficient: Minimal required 14, currently defined: 20
-- Shader install dir: /Users/mathisscheffler/miniconda3/envs/candle/share/candlewick/shaders
-- FFmpeg found (version 8.0.1).
-- Candlewick will be built with FFmpeg support.
-- eigenpy FOUND. eigenpy at /Users/mathisscheffler/miniconda3/envs/candle/lib/libeigenpy.dylib
-- Checking for NumPy
--   NUMPY_INCLUDE_DIRS=/Users/mathisscheffler/miniconda3/envs/candle/lib/python3.12/site-packages/numpy/_core/include
--   NUMPY_VERSION=2.3.5
-- PythonLibraryDirs: 
-- PythonLibVersionString: 3.12.12
-- Python site lib: lib/python3.12/site-packages
-- Python include dirs: /Users/mathisscheffler/miniconda3/envs/candle/include/python3.12
-- Checking for NumPy
--   NUMPY_INCLUDE_DIRS=/Users/mathisscheffler/miniconda3/envs/candle/lib/python3.12/site-packages/numpy/_core/include
--   NUMPY_VERSION=2.3.5
-- NumPy include dir: /Users/mathisscheffler/miniconda3/envs/candle/lib/python3.12/site-packages/numpy/_core/include
-- C++ standard sufficient: Minimal required 14, currently defined: 20
-- Create files for AMENT (ROS 2)
-- Configuring done (1.3s)
-- Generating done (0.1s)
-- Build files have been written to: /Users/mathisscheffler/Desktop/candlewick/build
  • Dépendances: installées selon le README

Étapes de reproduction

1. Lancement du visualiseur

Lancer le visualiseur dans un premier terminal :

candlewick-visualizer --help

Sortie obtenue :

[15:56:48] [info] ZMQ endpoint (setup): tcp://127.0.0.1:12000
[15:56:48] [info] ZMQ endpoint (state): tcp://127.0.0.1:12002

Problème : Aucune fenêtre n'apparaît.

2. Exécution de l'exemple

Lancer l'exemple dans un second terminal :

python examples/python/ur3_async_runtime.py

Sortie obtenue :

Connected sync socket 3 to tcp://127.0.0.1:12000
Connected state publisher 1 to tcp://127.0.0.1:12002

Crash du visualiseur :

Le processus du visualiseur dans le premier terminal plante avec l'erreur suivante :

libc++abi: terminating due to uncaught exception of type boost::archive::archive_exception: input stream error
[1]    72967 abort      candlewick-visualizer

Test complémentaire

L'exécution d'un visualiseur synchrone simple ne fonctionne pas non plus. Le code suivant ne produit aucun affichage :

import example_robot_data as erd
import pinocchio as pin
from candlewick import Visualizer, VisualizerConfig, create_recorder_context

robot = erd.load("ur10")
model: pin.Model = robot.model
visual_model: pin.GeometryModel = robot.visual_model

config = VisualizerConfig()
config.width = 1280
config.height = 720
viz = Visualizer(config, model, visual_model)

q0 = pin.neutral(model)
viz.addFrameViz(model.getFrameId("tool0"))

with create_recorder_context(viz, "ur10_video.mp4"):
    while not viz.shouldExit:
        viz.display(q0)

Problème : Aucune fenêtre n'apparaît, rien ne se passe et le programme plante avec cette erreur.

-[AGXG16XFamilyCommandBuffer renderCommandEncoderWithDescriptor:]:964: failed assertion `A command encoder is already encoding to this command buffer'
[1]    73060 abort      python

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions