# Race condition in linux build

**URL:** <https://discourse.slicer.org/t/race-condition-in-linux-build/43372>\
**Category:** Development\
**Created:** [June 16, 2025, 7:18pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372 "2025-06-16T19:18:32Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [June 16, 2025, 7:18pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/1 "2025-06-16T19:18:32Z")

</div>

Building fresh with yesterday’s git checkout on a Ubuntu 24.04 machine I got the following repeatably with `make -j8`. However when I tried to narrow it down with plain `make` the build succeeded and the program runs fine. I’m guessing this is some kind of race condition because the Transforms module depends on Markups?

Does it happen on for others? My mac builds from a few days ago are fine (using June 2 checkout so with python3.12).

```auto
...
[24%] Built target vtkSlicerAnnotationsModuleMRMLHierarchy
[24%] For vtkSlicerTransformsModuleLogic - updating vtkSlicerTransformsModuleLogicHierarchy.txt
[24%] Generating Python wrapper sources for vtkMRMLSceneViewNode
vtkWrapHierarchy: couldn't open file /media/share/tms-work/slicer/Slicer-superbuild/Slicer-build/vtkSlicerMarkupsModuleMRMLHierarchy.txt
make[5]: *** [Modules/Loadable/Transforms/Logic/CMakeFiles/vtkSlicerTransformsModuleLogicHierarchy.dir/build.make:77: Modules/Loadable/Transforms/Logic/vtkSlicerTransformsModuleLogicHierarchy.stamp.txt] Error 1
make[4]: *** [CMakeFiles/Makefile2:8746: Modules/Loadable/Transforms/Logic/CMakeFiles/vtkSlicerTransformsModuleLogicHierarchy.dir/all] Error 2
make[4]: *** Waiting for unfinished jobs....
[24%] Generating Python wrapper sources for vtkMRMLSceneViewStorageNode
[24%] Generating Python wrapper sources for vtkMRMLScriptedModuleNode
...

```

---

<div class="post-metadata">

**Author:** ![RafaelPalomar](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/rafaelpalomar/32/1436_2.png) [@RafaelPalomar](https://discourse.slicer.org/u/RafaelPalomar)\
**Post date:** [June 16, 2025, 7:55pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/2 "2025-06-16T19:55:31Z")

</div>

Hello @pieper. I’ve never experienced anything like this. Have you tried Ninja? I can give a try in Ubuntu 25.04 tomorrow.

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [June 16, 2025, 8:00pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/3 "2025-06-16T20:00:31Z")

</div>

Thanks for checking. No, I haven’t tried ninja for this.

Looks like the preview build failed last night with some github glitch. I’m able to download the file that it says it couldn’t. So maybe tomorrow we’ll see what the dashboard shows. I believe it uses `make`.

[https://slicer.cdash.org/viewBuildError.php?buildid=3830826](https://slicer.cdash.org/viewBuildError.php?buildid=3830826)

---

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [June 16, 2025, 8:07pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/4 "2025-06-16T20:07:28Z")

</div>

I am wondering if this is a side effect of:

- [PR-8464](https://github.com/Slicer/Slicer/pull/8464): `COMP: Move vtkSlicerCLIModuleLogic from Base/QTCLI to Base/Logic`
- [PR-8475](https://github.com/Slicer/Slicer/pull/8475): `COMP: Fix macOS build removing obsolete VTK wrapping of qSlicerBaseQTCLI`

* * *

The Linux (‘metroplex’) factory uses ninja\[1\]:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/b/d/bd1c9ee6c59022f5662801a45f03d5e316590beb.png)

* * *

1. [https://github.com/Slicer/DashboardScripts/blob/091a5e2b6571b34b412de6e92baa6927199dda9d/metroplex-slicer\_preview\_nightly.cmake#L20](https://github.com/Slicer/DashboardScripts/blob/091a5e2b6571b34b412de6e92baa6927199dda9d/metroplex-slicer_preview_nightly.cmake#L20)

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [June 16, 2025, 8:27pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/5 "2025-06-16T20:27:02Z")

</div>

Thanks @jcfr. Yes, it could be related to moving the logic code, but the error message looks like it comes from the wrapping, so I’m not sure.

If everything works with ninja maybe we should make it the default and update the documentation suggesting not to use make. I know some people like to say that if it’s not tested it’s probably broken, so having our instructions match our testing might simplify our lives.

I’m trying a ninja build now to see what happens.

---

<div class="post-metadata">

**Author:** ![chir.set](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/chir.set/32/66982_2.png) [@chir.set](https://discourse.slicer.org/u/chir.set)\
**Post date:** [June 16, 2025, 8:30pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/6 "2025-06-16T20:30:33Z")

</div>

I did a clean build today on Arch Linux with `make -j24` and it completed in a single step.

---

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [June 16, 2025, 8:36pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/7 "2025-06-16T20:36:02Z")

</div>

Transitioning to `Ninja` as our default CMake generator on Linux would require more work as `Unix Makefiles` is currently used as the default\[1\] one for building all extensions.

The fact `Ninja` is used was done out of convenience to easily _split_\[2\] the build-system to allow support continuous integration without having to rebuild everything.

* * *

1. [https://github.com/Slicer/DashboardScripts/blob/091a5e2b6571b34b412de6e92baa6927199dda9d/metroplex-slicerextensions\_preview\_nightly.cmake#L18](https://github.com/Slicer/DashboardScripts/blob/091a5e2b6571b34b412de6e92baa6927199dda9d/metroplex-slicerextensions_preview_nightly.cmake#L18) 

2. [https://github.com/Slicer/SlicerDocker/blob/a66255f354cace3511a1a1c5047c398f2f605233/slicer-base/Dockerfile#L30-L33](https://github.com/Slicer/SlicerDocker/blob/a66255f354cace3511a1a1c5047c398f2f605233/slicer-base/Dockerfile#L30-L33)

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [June 16, 2025, 10:29pm UTC](https://discourse.slicer.org/t/race-condition-in-linux-build/43372/8 "2025-06-16T22:29:42Z")

</div>

My build with ninja worked with no problem, of course so do some `make` builds, so it’s hard to know for sure. I guess we’ll just need to keep our eye open for it.
