** No longer affects: pmix (Ubuntu)
** Description changed:
+ SUMMARY: On Ubuntu 26.04, hwloc's GL plugin (hwloc_gl.so, in
+ libhwloc-plugins) blocks forever in an X11 connection attempt during
+ topology discovery. Plain "lstopo" never returns, and every Open MPI program
+ launched directly — without mpirun — hangs inside MPI_Init_thread before
+ reaching user code. Upstream hwloc fixed this in 2.14 by disabling the GL
+ component by default; resolute ships 2.13.0-2. Requesting an SRU to backport
+ that default. Sole working mitigation: HWLOC_COMPONENTS=-gl.
+
[Impact]
- On a default Ubuntu 26.04 desktop install (Wayland session), any process that
- performs hwloc topology discovery with I/O devices enabled blocks FOREVER in
- connect() to an X display socket, inside hwloc's GL plugin
- (/usr/lib/x86_64-linux-gnu/hwloc/hwloc_gl.so). There is no timeout, no error
- message, and in the shipped hwloc version no runtime knob dedicated to this
- plugin — the process simply hangs.
+ Any process performing hwloc topology discovery with I/O devices enabled
+ hangs indefinitely inside XOpenDisplay, called from hwloc's GL plugin during
+ hwloc_topology_load. No error, no output, no timeout observed.
- The simplest demonstration is that plain "lstopo", with no arguments, never
- returns.
-
- The most prominent victim is Open MPI. Every MPI program launched directly
- ("./app", i.e. singleton init, which the MPI standard supports and which
- worked on every previous Ubuntu release) hangs inside MPI_Init /
- MPI_Init_thread before reaching user code. Programs launched via
- "mpirun -n N app" are NOT affected, because the MPI processes then receive
- their topology pre-computed from the PRRTE daemon via PMIx instead of running
- hwloc discovery themselves. This asymmetry hides the bug from most testing
- (anything exercised under mpirun passes) while breaking direct invocation,
- scripted single-process runs, test suites, and mpi4py-style usage.
+ Open MPI is the significant victim. Singleton init ("./app") — supported by
+ the MPI standard, and working on 24.04 — hangs before user code runs.
+ "mpirun -n N app" is unaffected (verified), because those processes get their
+ topology from the PRRTE daemon via PMIx rather than running hwloc discovery
+ themselves. That asymmetry hides the bug from any testing done under mpirun
+ while breaking direct invocation, scripted single-process runs and test
+ suites.
Aggravating factors:
- * The hang occurs on a fully working NVIDIA setup with the proprietary
- driver installed — this is not a missing-hardware or missing-driver
- situation. The GL plugin's sole purpose is NVIDIA NV-CONTROL display
- locality, and it blocks even where that hardware is present and healthy.
- * libhwloc-plugins is installed on any system with Open MPI, because
- libopenmpi40 and libpmix2t64 both hard-Depend on it (see the secondary
- issue at the bottom). It is therefore active in every MPI process.
- * This is a regression relative to Ubuntu 24.04 LTS, on a brand-new LTS with
- years of support ahead, and it is present on FRESH installs — in no way an
- artefact of upgrading. Confirmed on two distinct hardware configurations,
- both clean 26.04 installs (see Reproducibility).
- * DISPLAY is irrelevant: the plugin synthesises its own display names, so
- users cannot dodge this by unsetting DISPLAY (verified below).
- * The failure mode is a silent hang with no diagnostic output; identifying
- the cause required attaching gdb to the stuck process.
+ * Verified on two distinct hardware configurations, both clean
+ (non-upgraded) 26.04 installs: a defect of the released packages, not an
+ upgrade artefact.
+ * The plugin is loaded into every MPI process, and cannot be removed:
+ libopenmpi40 and libpmix2t64 both hard-Depend on libhwloc-plugins (see
+ Secondary issue).
+ * No environment-based escape. The hang persists with DISPLAY unset, with
+ XAUTHORITY unset, and with a completely empty environment (env -i) — all
+ verified.
+ * A silent hang with no diagnostic output; diagnosis required attaching gdb.
+ * A regression from 24.04 on a new LTS with years of support remaining.
- Upstream hwloc has already acknowledged and fixed exactly this problem: as of
- hwloc 2.14, the GL component is disabled by default and must be explicitly
- opted into with HWLOC_GL=1, because (per the upstream documentation) the code
- "may hang when trying to connect to the X server". Resolute ships 2.13.0-2 —
- one release short of the fix, so it has the hang without the remedy.
-
- Requesting an SRU that backports the upstream default-off behaviour (a small,
- self-contained change) or updates to a 2.14+ point release.
+ Upstream hwloc addressed exactly this in 2.14: the GL component is now
+ disabled unless HWLOC_GL=1 is set, because (per upstream documentation) the
+ code "may hang when trying to connect to the X server". Resolute ships
+ 2.13.0-2, one release short of that change.
[Test Plan]
- IMPORTANT PRECONDITION: the reproducer must be run from a terminal emulator
- running INSIDE the graphical session. A text console on another VT
- (Ctrl+Alt+F2, i.e. no graphical session in that login) does NOT reproduce the
- hang — verified. Testing from a VT, and most likely from an SSH login or a
- headless VM console (not verified), will therefore show no problem even on an
- affected system. Note that this is not simply a matter of DISPLAY being
- unset: unsetting DISPLAY in a graphical-session terminal still hangs (see
- [Other Info]), so the differentiating factor is something else about the
- graphical session context and has not yet been isolated.
+ PRECONDITION: run from a terminal inside the graphical session. Verified: the
+ hang does NOT occur from a text console on another VT (Ctrl+Alt+F2). It is
+ not an environment variable that differs — see the verified results below.
- All steps below assume a default Ubuntu 26.04 desktop install with an active
- graphical (Wayland) session, using its terminal.
+ 1. PRIMARY, no compilation required:
- 1. Without MPI (minimal reproducer). Note that lstopo lives in the "hwloc"
- package, which is not part of a default install:
+ sudo apt install hwloc # lstopo is not installed by default
+ timeout 15 lstopo >/dev/null 2>&1; echo $?
- sudo apt install hwloc
- timeout 15 lstopo > /dev/null; echo $?
+ Affected: 124 (i.e. still running when killed; left unbounded, it did not
+ return after several minutes). Fixed: expected 0, returning promptly.
- Affected system: prints "124" (killed by the timeout; without it, lstopo
- never returns — observed for many minutes, and indefinitely in the MPI
- case).
- Fixed package: prints "0" and returns essentially instantly.
-
- Plain "lstopo" with no arguments is sufficient: lstopo enables I/O device
- discovery by default, so no --whole-io or other flag is needed. Verified
- on the affected system that "lstopo" returns 124 while
- "HWLOC_COMPONENTS=-gl lstopo" returns 0 immediately, in the same shell.
-
- Optional cross-check, to rule out lstopo's own graphical X11 support
- rather than the GL plugin: repeat with the non-X build of the tools from
- hwloc-nox. Note hwloc-nox and hwloc conflict, so this replaces hwloc;
- confirm the binary name with "dpkg -L hwloc-nox":
-
- sudo apt install hwloc-nox
- timeout 15 lstopo-no-graphics > /dev/null; echo $?
-
- The backtraces already settle the point — the blocking call sits inside
- hwloc_gl.so, below XOpenDisplay and reached from hwloc_topology_load, i.e.
- in library code that lstopo merely calls into. The MPI reproducer reaches
- the same frames with no lstopo in the picture at all.
-
- 2. With MPI (the real-world symptom). hello.c:
+ 2. SECONDARY, real-world symptom. Verified with a production Open MPI
+ application: run directly it hangs in MPI_Init_thread (backtrace below);
+ "mpirun -n 1" of the same binary works. Equivalent minimal program for
+ verification:
#include <mpi.h>
- int main(void) {
- int tl;
+ int main(void) { int tl;
MPI_Init_thread(NULL, NULL, MPI_THREAD_MULTIPLE, &tl);
- MPI_Finalize();
- return 0;
- }
+ MPI_Finalize(); return 0; }
mpicc hello.c -o hello
- ./hello # affected: hangs forever; fixed: exits 0
- mpirun -n 1 ./hello # works before and after (control case)
+ ./hello # affected: hangs; fixed: exits 0
+ mpirun -n 1 ./hello # control: works either way
- 3. Opt-in still functional after the fix (upstream 2.14 semantics):
-
- HWLOC_GL=1 lstopo > /dev/null
-
- should re-enable the GL probe, and may therefore hang again on affected
- configurations — that is the expected, documented opt-in behaviour.
+ 3. Opt-in still available on the fixed package, per hwloc 2.14 semantics:
+ "HWLOC_GL=1 lstopo" should re-enable the GL probe.
[Where problems could occur]
- The backport changes the default component set: topologies will no longer
- contain GL OS device objects (names like ":0.0") unless HWLOC_GL=1 is set.
- Only software using the hwloc/gl.h interoperability API — NVIDIA
- display-to-GPU locality, e.g. some visualisation schedulers — would notice,
- and the environment variable restores the previous behaviour. CUDA, NVML,
- OpenCL and PCI discovery are unaffected, being separate components. The
- resulting default matches upstream hwloc >= 2.14, so this does not diverge
- from where later Ubuntu releases will land anyway. Risk is low and confined
- to a feature that is recoverable by opt-in.
+ Topologies will no longer contain GL OS device objects (such as ":0.0")
+ unless HWLOC_GL=1 is set. Only software using the hwloc/gl.h interoperability
+ API for NVIDIA display-to-GPU locality would notice, and the environment
+ variable restores the previous behaviour. The resulting default matches
+ upstream hwloc >= 2.14, so this does not diverge from where later Ubuntu
+ releases land anyway.
[Other Info]
- * HWLOC_GL=0 is silently accepted and IGNORED by the shipped version: the
- variable only acquires meaning in 2.14, where it is the opt-IN. The
- documented upstream mitigation therefore does not exist in resolute.
- Verified: "HWLOC_GL=0 lstopo" still hangs.
+ Verified results, graphical-session terminal, 15 s timeout (124 = hang):
- * The only working runtime mitigation on the shipped version is the generic
- component blacklist, HWLOC_COMPONENTS=-gl (verified; see Workarounds).
- That mechanism has existed since hwloc 1.6.0, so it is dependable, but it
- is undiscoverable for a user facing a silent hang.
+ timeout 15 lstopo -> 124
+ env -u DISPLAY timeout 15 lstopo -> 124
+ env -u XAUTHORITY timeout 15 lstopo -> 124
+ env -i /usr/bin/timeout 15 /usr/bin/lstopo -> 124
+ HWLOC_COMPONENTS=-gl timeout 15 lstopo -> 0
+ (same lstopo invocation from a VT text console: does not hang)
- * DISPLAY alone does not explain the trigger, and the trigger is not fully
- isolated. Within a graphical-session terminal, lstopo hangs identically
- whether DISPLAY=:0 is exported by the session or DISPLAY is unset entirely
- (both return 124 under a 15 s timeout) — consistent with the GL backend
- synthesising candidate display names of the form ":port.device" itself
- rather than honouring DISPLAY. Yet the same command run from a text console
- on another VT (Ctrl+Alt+F2), where DISPLAY is likewise unset, does NOT
- hang. So something else about the graphical session context is required.
- XAUTHORITY is an obvious candidate but this has not been confirmed. Either
- way, a user cannot avoid the hang by unsetting DISPLAY in the environment
- where they actually work.
+ * HWLOC_GL=0 does not help: that variable only acquires meaning in 2.14,
+ where it is the opt-IN. Verified — "HWLOC_GL=0 lstopo --whole-io -" was
+ left running for several minutes without returning. So the documented
+ upstream mitigation does not exist in resolute.
+ * HWLOC_COMPONENTS=-gl is the only working mitigation found (verified for
+ both lstopo and the MPI application). It has existed since hwloc 1.6.0,
+ but is undiscoverable for a user facing a silent hang.
+ * Upstream: the hang warning and the HWLOC_GL=1 opt-in appear in
+ include/hwloc/gl.h from hwloc v2.14, and in the current upstream
+ "Components and plugins" documentation. Related upstream issue in the same
+ backend and XOpenDisplay path, milder symptom:
+ https://github.com/open-mpi/hwloc/issues/483
- * Possibly relevant to why connect() blocks rather than failing fast: this
- system has two X socket files but only one X server process. Xwayland is
- running on :0, yet /tmp/.X11-unix/ contains both X0 and X1 (see
- Environment). A connect() to a Unix socket whose server is absent normally
- fails immediately with ECONNREFUSED, so an indefinite block suggests
- either a listener that never accepts or a socket left behind by a departed
- server. Offered as an observation only — the hwloc-side defect stands
- regardless, which is precisely the reasoning upstream applied when they
- disabled the component by default.
+ Backtrace (full gdb "thread apply all bt" of a hung plain lstopo attached as
+ lstopo-hang-backtrace.txt; the excerpt below is from the hung MPI
+ application on the same system, captured the same way):
- * Related upstream issue (same backend, same XOpenDisplay path, milder
- symptom): https://github.com/open-mpi/hwloc/issues/483
- Upstream default-off change: first appears in include/hwloc/gl.h as of
- hwloc v2.14 ("This code may hang when trying to connect to the X server.
- Hence the GL component is disabled unless HWLOC_GL=1 in the environment.")
- The same wording is in the current upstream "Components and plugins"
- documentation.
+ #3 __libc_connect (...) <- blocked here
+ #4 xcb_connect_to_display_with_auth_info () libxcb.so.1
+ #6 XOpenDisplay () libX11.so.6
+ #7 ?? () hwloc/hwloc_gl.so
+ #9 hwloc_topology_load () libhwloc.so.15
+ #10 opal_hwloc_base_get_topology () libopen-pal.so.80
+ #16-#18 ompi_mpi_instance_init / ompi_mpi_init libmpi.so.40
+ #19 PMPI_Init_thread () libmpi.so.40
+ #20 <application>
- * Ubuntu has defaulted to a Wayland session since 25.10, which is the likely
- reason this surfaced now: the GL plugin has always probed X during topology
- load, but under Xorg sessions the probe completed or failed quickly. A
- hardware-discovery library that blocks indefinitely on X inside its init
- path, with no timeout, is the defect either way.
+ All other threads idle (PMIx progress thread in epoll_wait, OpenBLAS pool in
+ pthread_cond_wait) — PMIx and runtime bring-up completed normally.
-
--------------------------------------------------------------------------------
- Steps to reproduce
-
--------------------------------------------------------------------------------
- 1. Install Ubuntu 26.04 and log into the default desktop session. A fresh
- install is sufficient — this is NOT specific to upgraded systems. Use a
- terminal emulator inside that graphical session: a text console on another
- VT does not reproduce the hang (see the precondition in [Test Plan]).
- 2. Build any Open MPI application against the distro Open MPI.
- 3. Run it directly: ./App -> hangs at MPI_Init_thread(...)
- Run it as: mpirun -n 1 ./App -> runs normally.
- 4. sudo apt install hwloc, then run: lstopo
- -> also hangs (no MPI involved).
+ Reproducibility: 100% on both configurations tested, each a fresh/clean 26.04
+ install with no third-party or self-built hwloc/MPI:
+ A. AMD Ryzen 9 9950X + NVIDIA GeForce RTX 5060 Ti (GB206)
+ B. AMD Ryzen 9 7950X + NVIDIA GeForce RTX 4060 Ti
+ Both have an NVIDIA discrete GPU alongside AMD integrated graphics; systems
+ without an NVIDIA GPU were not tested.
- Expected: singleton launch initialises just as "mpirun -n 1" does, as it did
- on 24.04 and every earlier release; lstopo returns promptly.
+ SECONDARY ISSUE: the plugin cannot be declined without removing MPI
- Actual: indefinite hang, no output, no error.
+ hwloc's own packaging leaves it optional — libhwloc15 only Recommends
+ libhwloc-plugins. The hard dependency comes from the MPI side (relevant lines
+ only, from "apt-cache show libhwloc15 libpmix2t64 libopenmpi40"):
- Reproducibility: 100% reproducible, with the distro packages alone, on both
- hardware configurations tested. Every system was a FRESH/CLEAN Ubuntu 26.04
- install — no upgrade path, no configuration carried over from a previous
- release, no self-built or third-party hwloc/MPI involved. The two
- configurations are:
-
- A. AMD Ryzen 9 9950X + NVIDIA GeForce RTX 5060 Ti (GB206)
- B. AMD Ryzen 9 7950X + NVIDIA GeForce RTX 4060 Ti
-
- Both have an NVIDIA discrete GPU alongside AMD integrated graphics. Systems
- with no NVIDIA GPU at all were not tested; based on the code path the probe
- should run there too, but this report does not claim it.
-
-
--------------------------------------------------------------------------------
- Backtrace of the hung process
-
--------------------------------------------------------------------------------
- Attached: full gdb "thread apply all bt" of a hung plain "lstopo" — no MPI and
- no user application involved, reproducible with distro packages alone.
-
- The stack below is from the original discovery, a hung Open MPI singleton
- launch, and shows how the same blocking call is reached from MPI_Init_thread.
- Thread 1 (main thread), obtained with
- "gdb -p <pid> -batch -ex 'thread apply all bt'":
-
- #3 __libc_connect (...) <- blocked here
- #4 xcb_connect_to_display_with_auth_info () libxcb.so.1
- #5 _XConnectXCB () libX11.so.6
- #6 XOpenDisplay () libX11.so.6
- #7 ?? () hwloc/hwloc_gl.so
- #8 ?? () libhwloc.so.15
- #9 hwloc_topology_load () libhwloc.so.15
- #10 opal_hwloc_base_get_topology () libopen-pal.so.80
- #11-#15 mca_base_framework_open (...) libopen-pal.so.80
- #16 ?? () libmpi.so.40
- #17 ompi_mpi_instance_init () libmpi.so.40
- #18 ompi_mpi_init () libmpi.so.40
- #19 PMPI_Init_thread () libmpi.so.40
- #20 <application>
-
- All other threads are idle — the PMIx progress thread in epoll_wait, an
- OpenBLAS worker pool in pthread_cond_wait — i.e. PMIx and runtime bring-up
- completed normally. The hang is exclusively the GL plugin's X connect.
-
-
--------------------------------------------------------------------------------
- Root cause
-
--------------------------------------------------------------------------------
- hwloc's GL backend (topology-gl.c, shipped as hwloc_gl.so in
- libhwloc-plugins) queries the NVIDIA NV-CONTROL X extension to annotate GPU
- display locality. During hwloc_topology_load with I/O discovery enabled —
- which Open MPI's opal_hwloc_base_get_topology performs, and which lstopo
- enables by default — it calls XOpenDisplay on candidate display names it
- constructs itself. On this system that connect() never completes. In hwloc
- 2.13 the plugin runs unconditionally: no dedicated runtime disable, no
- timeout, no diagnostic.
-
-
--------------------------------------------------------------------------------
- Workarounds for affected users
-
--------------------------------------------------------------------------------
- 1. Per-process / per-shell (both verified working):
-
- HWLOC_COMPONENTS=-gl ./App
- HWLOC_COMPONENTS=-gl lstopo
-
- 2. NOT workarounds on this version: HWLOC_GL=0 (silently ignored), unsetting
- DISPLAY (no effect within a graphical session), and removing
- libhwloc-plugins (would remove the MPI stack — see below). Running from a
- text console on another VT does avoid the hang, but that is a property of
- the reproduction environment rather than a usable workaround for anyone
- working in a desktop session.
-
-
--------------------------------------------------------------------------------
- SECONDARY ISSUE: the X-linked plugin cannot be declined without removing MPI
-
--------------------------------------------------------------------------------
- hwloc's own packaging is correct here — libhwloc15 only Recommends the plugin
- package. The hard dependency comes from the MPI side:
+ Package: libhwloc15 (2.13.0-2)
+ Recommends: libhwloc-plugins
+ Package: libpmix2t64 (6.0.0+really5.0.9-3build1)
+ Depends: ..., libhwloc15 (>= 2.12.2), ..., libhwloc-plugins
+ Package: libopenmpi40 (5.0.10-1)
+ Depends: ..., libhwloc15 (>= 2.13.0), libpmix2t64 (>= 6.0.0+really5.0.9),
+ ..., libhwloc-plugins
$ dpkg -S /usr/lib/x86_64-linux-gnu/hwloc/hwloc_gl.so
libhwloc-plugins:amd64: /usr/lib/x86_64-linux-gnu/hwloc/hwloc_gl.so
- $ apt-cache show libhwloc15 libpmix2t64 libopenmpi40 \
- | grep -E '^(Package|Version|Depends|Recommends)'
- Package: libhwloc15
- Version: 2.13.0-2
- Recommends: libhwloc-plugins
- Depends: libc6 (>= 2.38), libudev1 (>= 183)
- Package: libpmix2t64
- Version: 6.0.0+really5.0.9-3build1
- Depends: libc6 (>= 2.38), libevent-core-2.1-7t64 (>= 2.1.8-stable),
- libevent-pthreads-2.1-7t64 (>= 2.1.8-stable), libhwloc15 (>= 2.12.2),
- libmunge2 (>= 0.5.8), zlib1g (>= 1:1.2.0), libhwloc-plugins
- Package: libopenmpi40
- Version: 5.0.10-1
- Depends: libc6 (>= 2.38), libevent-core-2.1-7t64 (>= 2.1.8-stable),
- libevent-pthreads-2.1-7t64 (>= 2.1.8-stable), libfabric1 (>= 2.0.0),
- libgcc-s1 (>= 3.0), libhwloc15 (>= 2.13.0), libnl-3-200 (>= 3.11.0),
- libpmix2t64 (>= 6.0.0+really5.0.9), libpsm2-2 (>= 10.3-37),
- libucc1 (>= 1.7.0~rc1), libucx0, libhwloc-plugins
+ So "apt remove libhwloc-plugins" would take libopenmpi40 and libpmix2t64 with
+ it — the entire MPI stack. There is no route through apt to decline a plugin
+ that is loaded into every MPI process. Requests, complementary to the
+ default-off backport: split hwloc_gl.so into its own binary package (there is
+ precedent in libhwloc-contrib-plugins), or stop shipping it. Happy to file
+ this separately against openmpi/pmix if preferred.
- Consequences:
- * "apt remove libhwloc-plugins" would remove libopenmpi40 and libpmix2t64
- with it, i.e. the entire MPI stack. There is no supported way to decline
- an X11-connecting plugin that is dlopen'd into every MPI process, and no
- way to do so through apt at all.
- * The plugin is installed and active on headless servers and HPC compute
- nodes as readily as on desktops. An hwloc-nox package exists for the
- command-line utilities, but there is no equivalent for the plugin package.
+ Environment (configuration A)
- Note that those Depends are presumably not gratuitous: libhwloc-plugins
- bundles the GL plugin together with plugins that MPI does legitimately want
- for locality (PCI/CUDA/NVML-class discovery). That is precisely why the right
- remedy is to separate the X-dependent plugin rather than to weaken the MPI
- dependencies:
+ Ubuntu 26.04 LTS (resolute); XDG_SESSION_TYPE=wayland; DISPLAY=:0
+ hwloc / libhwloc15 / libhwloc-plugins 2.13.0-2
+ openmpi-bin / libopenmpi40 5.0.10-1
+ libpmix2t64 6.0.0+really5.0.9-3build1
+ All from resolute/universe, release pocket: no updates, PPAs or local
+ builds. lstopo --version reports 2.13.0.
- a) Split hwloc_gl.so into its own binary package — there is precedent in
- libhwloc-contrib-plugins — so that it can be omitted without touching
- PCI discovery or the MPI stack; or
- b) failing that, stop building the gl plugin for Ubuntu, since its only
- function is NVIDIA NV-CONTROL display locality, which is of marginal
- value on the systems that install it by default.
+ AMD Ryzen 9 9950X (16C/32T, 1 NUMA node)
+ 01:00.0 VGA: NVIDIA GB206 [GeForce RTX 5060 Ti]
+ 74:00.0 VGA: AMD Granite Ridge [Radeon Graphics]
- Happy to split this section into a separate bug against openmpi/pmix if the
- maintainers prefer.
+ Xwayland running on :0 (no Xorg process). /tmp/.X11-unix/ contains X0 and
+ X1.
-
--------------------------------------------------------------------------------
- Environment
-
--------------------------------------------------------------------------------
- $ lsb_release -rd
- Description: Ubuntu 26.04 LTS
- Release: 26.04
+ Note: lstopo itself is not installed by default, but the defect is present on
+ a default install regardless, because libhwloc-plugins arrives with the Open
+ MPI runtime libraries.
- $ lstopo --version
- lstopo 2.13.0
+ Regression baseline: the same application and workflow ran correctly on
+ Ubuntu 24.04 (hwloc 2.10.0-1build1, Open MPI 4.1.6) for years.
- $ apt-cache policy hwloc libhwloc15 libhwloc-plugins openmpi-bin libopenmpi40
libpmix2t64
- hwloc: Installed: 2.13.0-2
(resolute/universe)
- libhwloc15: Installed: 2.13.0-2
(resolute/universe)
- libhwloc-plugins: Installed: 2.13.0-2
(resolute/universe)
- openmpi-bin: Installed: 5.0.10-1
(resolute/universe)
- libopenmpi40: Installed: 5.0.10-1
(resolute/universe)
- libpmix2t64: Installed: 6.0.0+really5.0.9-3build1
(resolute/universe)
-
- All from the release pocket; no updates, no PPAs, no local builds.
- hwloc 2.13.0 is one upstream release short of 2.14, where the GL component
- was disabled by default.
-
- $ dpkg -S /usr/lib/x86_64-linux-gnu/hwloc/hwloc_gl.so
- libhwloc-plugins:amd64: /usr/lib/x86_64-linux-gnu/hwloc/hwloc_gl.so
-
- $ echo $XDG_SESSION_TYPE
- wayland
-
- $ echo $DISPLAY
- :0
-
- $ pgrep -a Xwayland
- 10464 /usr/bin/Xwayland :0 -rootless -noreset -accessx -core -auth
- /run/user/1000/.mutter-Xwaylandauth.IXZNT3 -listenfd 4 -listenfd 5
- -displayfd 6 -initfd 7 -byteswappedclients -enable-ei-portal
-
- $ pgrep -a Xorg
- (no output — no Xorg server running)
-
- $ ls -l /tmp/.X11-unix/
- total 0
- srwxrwxr-x 1 roy roy 0 Aug 4 08:43 X0
- srwxrwxr-x 1 roy roy 0 Aug 4 08:43 X1
-
- (note: two socket files, but only one X server process, on :0 — see the
- observation in [Other Info])
-
- $ lspci | grep -Ei 'vga|3d|display'
- 01:00.0 VGA compatible controller: NVIDIA Corporation GB206 [GeForce RTX 5060
Ti] (rev a1)
- 74:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI]
Granite Ridge [Radeon Graphics] (rev c1)
-
- $ lscpu | grep -E 'Model name|^CPU\(s\)|Socket|Core|Thread|NUMA node\(s\)'
- Model name: AMD Ryzen 9 9950X 16-Core Processor
- CPU(s): 32
- Thread(s) per core: 2
- Core(s) per socket: 16
- Socket(s): 1
- NUMA node(s): 1
-
- Reproduction results on this machine, same shell, 15 s timeout each:
-
- $ timeout 15 lstopo >/dev/null 2>&1; echo $?
- 124 <- hangs
-
- $ env -u DISPLAY timeout 15 lstopo >/dev/null 2>&1; echo $?
- 124 <- still hangs; DISPLAY is irrelevant
-
- $ HWLOC_COMPONENTS=-gl timeout 15 lstopo >/dev/null 2>&1; echo $?
- 0 <- succeeds immediately with GL blacklisted
-
- Note on tooling: lstopo is not present on a default install — the "hwloc"
- package must be added to run the non-MPI reproducer. The DEFECT is present on
- a default install regardless, because libhwloc-plugins (which contains
- hwloc_gl.so) arrives automatically with the Open MPI runtime libraries.
-
- Regression baseline: the identical application and workflow ran correctly on
- Ubuntu 24.04 (hwloc 2.10.0-1build1, Open MPI 4.1.6) for years. It fails on
- 26.04 (hwloc 2.13.0-2, Open MPI 5.0.10-1) on both upgraded and freshly
- installed systems.
+ Disclosure: this investigation and report were prepared with AI assistance
+ (Anthropic's Claude). Every command output and reproduction result quoted
+ above was executed by the reporter on the affected systems; upstream
+ references were checked against hwloc's source headers and documentation.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2162940
Title:
hwloc GL plugin hangs in XOpenDisplay() during topology load: plain
"lstopo" and every Open MPI singleton launch hang on 26.04 (fixed
upstream in hwloc 2.14)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/hwloc/+bug/2162940/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs