Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: [hwloc-devel] Crash with ignoring HWLOC_OBJ_NODE in 0.9.2
From: Michael Raymond (mraymond_at_[hidden])
Date: 2009-11-19 15:33:49


  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