Hi Brice, hi Jeff,
>Can you add some printf inside hwloc_linux_set_area_membind() in src/topology-linux.c to see if ENOMEM comes from the mbind >syscall or not?
I added printf inside that function, but ENOMEM does not come from there.
>Have you run your application through valgrind or another memory-checking debugger?
I tried with valgrind :
valgrind --track-origins=yes --log-file=output_valgrind --leak-check=full --tool=memcheck --show-reachable=yes ./main_hybrid_bind_mem
==25687== Warning: set address range perms: large range [0x39454040, 0x2218d4040) (undefined)
==25687== Valgrind's memory management: out of memory:
==25687== newSuperblock's request for 4194304 bytes failed.
==25687== 34253180928 bytes have already been allocated.
==25687== Valgrind cannot continue. Sorry.
I attach the full output.
The code dies also using OpenMP pure code. Very misteriously.
2012/9/5 Jeff Squyres <firstname.lastname@example.org>
On Sep 5, 2012, at 2:36 PM, Gabriele Fatigati wrote:Mmm. Probably right.
> I don't think is a simply out of memory since NUMA node has 48 GB, and I'm allocating just 8 GB.
Have you run your application through valgrind or another memory-checking debugger?
I've seen cases of heap corruption lead to malloc incorrectly failing with ENOMEM.
Ing. Gabriele Fatigati
SuperComputing Applications and Innovation Department
Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
Tel: +39 051 6171722
g.fatigati [AT] cineca.it