My Claude found this which seems relevant: Cannot import gmsh Python package
It also came up with all these suggestions.
The rest of this post is AI-generated content.
Concrete debugging plan (what I’d ask Murat to run)
- 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
- 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.) - If frame 0’s
bt fullshows the regex string is empty / null / garbage, the bug is most likely on the Slicer side (a recent change that passes an uninitializedstd::stringtostd::regex), not glibc. Same fix shape as the 2022vtkSlicerVolumeRenderingLogic::CreateROINoderegression in 2022-01-10.
Fix paths
- If libstdc++ mismatch is confirmed (step 2): ship a vendored
libstdc++.so.6inSlicer-5.11/lib/and add it to the launcher’sLD_LIBRARY_PATHahead 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_PATHentries containinganaconda/miniconda/condabefore exec, and document it. - If it’s a real null‑string fed into
std::regex: fix the call site (bt fullwill name it). No glibc involvement. - For chir.set’s Wayland/GLX issue (separate): have Slicer’s launcher detect
XDG_SESSION_TYPE=wayland+ Qt5 and defaultQT_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?