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
2010-02-02 18:28:53
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
2010-02-02 19:06:04
A:
It sounds like it could be a race condition - have you tried the 'helgrind' valgrind tool?
caf
2010-02-02 23:11:43
+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
2010-02-03 00:02:15