> 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

Reply via email to