[mpich-discuss] Cannot catch std::bac_alloc?

Jeff Hammond jeff.science at gmail.com
Wed Apr 3 11:51:02 CDT 2019


This error has nothing to do with MPI.

These two lines are the problem:

std::vector<std::vector<double> > a(100);
a[i].resize(1000000000);

You are trying to allocate 1e9 std::vector<double>, which I assume is many
gigabytes of memory.

Jeff


On Wed, Apr 3, 2019 at 8:58 AM Zhou, Hui via discuss <discuss at mpich.org>
wrote:
>
> I just tested on my Mac, the system keep popping out message asking me to
force kill some application to free up memory, but the code never crashed,
just stalled. So I guess the out-of-memory behavior is operating system
dependent. My guess is when you have multiple process competing for memory,
it may cause some race issue in the os that the OS  returns a valid address
but discover out-of memory later because the memory is stolen by another
process.
>
>> Hui Zhou
> T: 630-252-3430
>
>
>
>
>
>
>
>
> On Apr 3, 2019, at 8:42 AM, Zhen Wang via discuss <discuss at mpich.org>
wrote:
>
> Hi,
>
> I have difficulty catching std::bac_alloc in an MPI environment. The code
is attached. I'm uisng gcc 6.3 on SUSE Linux Enterprise Server 11 (x86_64).
mpich is built from source. The commands are as follows:
>
> Build
> g++ -I<mpich-3.3-opt/include> -L<mpich-3.3-opt/lib> -lmpi memory.cpp
>
> Run
> <mpich-3.3-opt/bin/mpiexec> -n 2 a.out
>
> Output
> 0
> 0
> 1
> 1
>
>
===================================================================================
> =   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
> =   PID 16067 RUNNING AT <machine name>
> =   EXIT CODE: 9
> =   CLEANING UP REMAINING PROCESSES
> =   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
>
===================================================================================
> YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Killed (signal 9)
> This typically refers to a problem with your application.
> Please see the FAQ page for debugging suggestions
>
> If I uncomment the line //if (rank == 0), i.e., only rank 0 allocates
memory, I'm able to catch bad_alloc as I expected. It seems that I am
misunderstanding something. Could you please help? Thanks a lot.
>
>
> Best regards,
> Zhen
> <memory.cpp>_______________________________________________
> discuss mailing list     discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
>
> _______________________________________________
> discuss mailing list     discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss



--
Jeff Hammond
jeff.science at gmail.com
http://jeffhammond.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20190403/202a84c6/attachment.html>


More information about the discuss mailing list