views:

44

answers:

3

I have a C/C++ application that crashes only under heavy loads. I normally use valgrind and gprof to debug memory leaks and profiling issues. Failure rate is like about 100 in a million runs. This is consistent. Rather than reproduce the traffic to my application, can I superficially limit the resources available to the debug build of the application running within valgrind somehow?

+2  A: 

ulimit can be used from bash to set hard limits on some resources.

Ignacio Vazquez-Abrams
All shells should have `ulimit`, not just Bash... http://www.opengroup.org/onlinepubs/000095399/utilities/ulimit.html As an aside to OP, the `ulimit` shell builtin uses the `getrlimit` and `setrlimit` functions, which you can use directly in C/C++ if you want.
ephemient
A: 

It sounds like it could be a race condition - have you tried the 'helgrind' valgrind tool?

caf
+1  A: 

Note that in Linux only some of the memory ulimits actually work.

For example, I don't think ulimit -d which is supposed to limit the data segment (which I think is RSS) really works.

As I recall from my experience with trying to keep Evolution (the email client) under control, ulimit -v (the virtual memory) was the only one that worked for me.

Zan Lynx