> move_pages() returning 0 with -14 in the status array? As opposed to > move_pages() returning -1 with errno set to 14, which would definitely be a > bug in hwloc.
I think it was move_pages returning zero with -14 in the status array, and then hwloc returning 0 with an empty nodeset (which I then messed up by calling get bitmap first and assuming 0 meant numa node zero and not checking for an empty nodeset). I'm not sure why I get -EFAULT status rather than -NOENT, but that's what I'm seeing in the status field when I pass the pointer returned from the alloc_membind call. JB ________________________________________ From: Brice Goglin [brice.gog...@inria.fr] Sent: 25 January 2019 21:08 To: Biddiscombe, John A. Cc: Hardware locality user list Subject: Re: [hwloc-users] unusual memory binding results Le 25/01/2019 à 14:17, Biddiscombe, John A. a écrit : > Dear List/Brice > > I experimented with disabling the memory touch on threads except for > N=1,2,3,4 etc and found a problem in hwloc, which is that the function > hwloc_get_area_memlocation was returning '0' when the status of the memory > null move operation was -14 (#define EFAULT 14 /* Bad address */). This was > when I call get area memlocation immediately after allocating and then 'not' > touching. I think if the status is an error, then the function should > probably return -1, but anyway. I'll file a bug and send a patch if this is > considered to be a bug. Just to be sure, you talking about move_pages() returning 0 with -14 in the status array? As opposed to move_pages() returning -1 with errno set to 14, which would definitely be a bug in hwloc. When the page is valid but not allocated yet, move_pages() is supposed to return status = -ENOENT. This case is not an error, so returning 0 with an empty nodeset looks fine to me (pages are not allocated, hence they are allocated on an empty set of nodes). -EFAULT means that the page is invalid (you'd get a segfault if you touch it). I am not sure what we should return in that case. It's also true that pages are allocated nowhere :) Anyway, if you get -EFAULT in status, it should mean that an invalid address was passed to hwloc_get_area_memlocation() or an invalid length. Brice _______________________________________________ hwloc-users mailing list hwloc-users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/hwloc-users