Volume rendering broken in latest Linux previews?

My Claude found this which seems relevant: Cannot import gmsh Python package

It also came up with all these suggestions.

:robot: The rest of this post is AI-generated content.

Concrete debugging plan (what I’d ask Murat to run)

  1. Capture a real backtrace, not just frame 0:
ulimit -c unlimited
./Slicer            # reproduce crash
coredumpctl gdb     # or: gdb ./bin/SlicerApp-real core
(gdb) bt full
(gdb) info sharedlibrary
(gdb) info proc mappings

Frame 0 alone tells us nothing about the caller; bt full will show which Slicer/VTK code fed garbage into the regex.
2. Identify which libstdc++ is actually loaded at the crash site:

cd Slicer-5.11.0-2026-05-05-linux-amd64
LD_DEBUG=libs ./Slicer 2>&1 | grep -E 'libstdc\+\+|libgcc_s' | head
ldd bin/SlicerApp-real | grep -E 'stdc\+\+|gcc_s'
strings -a $(ldd bin/SlicerApp-real | awk '/libstdc\+\+/{print $3}') \
  | grep -E '^GLIBCXX_[0-9]' | sort -V | tail
strings -a /usr/lib/x86_64-linux-gnu/libstdc++.so.6 \
  | grep -E '^GLIBCXX_[0-9]' | sort -V | tail

If those two GLIBCXX max versions differ, that’s the smoking gun.
3. Run with a clean environment to rule out conda contamination:

env -i HOME=$HOME PATH=/usr/bin:/bin DISPLAY=$DISPLAY \
    LANG=C.UTF-8 LC_ALL=C.UTF-8 \
    ./Slicer

If that fixes it, walk printenv | grep -E 'LD_|PYTHON|CONDA' to find the offending var.
4. Check the locale path (cheap and worth ruling out):

locale ; locale -a | grep -i utf
  1. Bisect the factory builds. download.slicer.org keeps weekly Linux previews; install three or four (e.g. 2026-04-01, 2026-04-15, 2026-04-28, 2026-05-05) and find the first that crashes on Murat’s box. Then git log --oneline <good_rev>..<bad_rev> on Slicer + look at Superbuild revisions of VTK/Qt for that span. (The thread does not yet identify a regressing commit, despite what the WebFetch summary claimed.)
  2. If frame 0’s bt full shows the regex string is empty / null / garbage, the bug is most likely on the Slicer side (a recent change that passes an uninitialized std::string to std::regex), not glibc. Same fix shape as the 2022 vtkSlicerVolumeRenderingLogic::CreateROINode regression in 2022-01-10.

Fix paths

  • If libstdc++ mismatch is confirmed (step 2): ship a vendored libstdc++.so.6 in Slicer-5.11/lib/ and add it to the launcher’s LD_LIBRARY_PATH ahead of system. Slicer used to do this; if it was dropped, that’s the regression. Cheapest verification: cp /usr/lib/.../libstdc++.so.6 lib/Slicer-5.11/ on the build machine, re‑run, see if the crash goes away.
  • If it’s a conda/Anaconda env pollution: add a launcher guard that scrubs LD_LIBRARY_PATH entries containing anaconda/miniconda/conda before exec, and document it.
  • If it’s a real null‑string fed into std::regex: fix the call site (bt full will name it). No glibc involvement.
  • For chir.set’s Wayland/GLX issue (separate): have Slicer’s launcher detect XDG_SESSION_TYPE=wayland + Qt5 and default QT_QPA_PLATFORM=xcb, since Slicer’s Qt5 has no working Wayland path with the VTK GL contexts.

Want me to draft the launcher patch for the Wayland default, or to scaffold a slicer-debug-libs.sh script that runs steps 1–4 in one go?