On one of my Linux machines I'm getting a crash if I do a
hwloc_topology_load() while ignoring HWLOC_OBJ_NODE.
#0 hwloc_cpuset_orset (set=0x605410, modifier_set=0x0) at cpuset.c:410
#1 0x00007fc87f943146 in hwloc__setup_misc_level_from_distances (
topology=0x604010, nbobjs=4, objs=0x7fff8228c750,
_distances=0x7fff8228c700, depth=0) at topology.c:256
#2 0x00007fc87f945fe8 in look_sysfsnode (topology=0x604010,
path=0x7fc87f9487c6 "/sys/devices/system/node",
admin_disabled_cpus_set=0x605080, admin_disabled_mems_set=0x605110)
at topology-linux.c:600
#3 0x00007fc87f946e0f in hwloc_look_linux (topology=0x604010)
at topology-linux.c:1052
#4 0x00007fc87f941fc9 in hwloc_topology_load (topology=0x604010)
at topology.c:904
#5 0x000000000040155d in main (argc=2, argv=0x7fff8228ccd8) at hwwalk.c:386
The following patch fixes it.
--- hwloc-0.9.2/src/topology-linux.c 2009-11-03 16:40:31.000000000 -0600
+++ hwloc-new//src/topology-linux.c 2009-11-19 14:20:43.630035434 -0600
@@ -536,6 +536,10 @@
struct dirent *dirent;
hwloc_obj_t node;
+ if (topology->ignored_types[HWLOC_OBJ_NODE] ==
HWLOC_IGNORE_TYPE_ALWAYS) {
+ return;
+ }
+
dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd);
if (dir)
{
Also I'm concerned about the value of CPUSET_MASK_LEN in
hwloc_admin_disable_set_from_cpuset(). It's only 64 characters but our
Linux boxes can have to 2048 processors. I don't think there's any harm
in bumping that up a little.
--
Michael A. Raymond
Message Passing Toolkit Team
Silicon Graphics Inc
(651) 683-3434