[PPL-devel] tests/Polyhedron/memory1 not workin on Mac OS X
Roberto Bagnara
bagnara at cs.unipr.it
Fri Sep 5 11:43:24 CEST 2008
Dear Dominique and Jack,
can you please try the following on your machines? My guess is that you
will not see the "bad_alloc caught" output from a.out, in which case
the question becomes:
Why isn't setrlimit working on Mac OS X?
All the best,
Roberto
$ cat bug.cc
#include <new>
#include <cstring>
#include <cerrno>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <iostream>
#include <cstdlib>
#define LIMIT(WHAT) \
do { \
if (getrlimit(WHAT, &t) != 0) { \
std::cerr << "getrlimit failed: " << strerror(errno) << std::endl; \
exit(1); \
} \
t.rlim_cur = bytes; \
if (setrlimit(WHAT, &t) != 0) { \
std::cerr << "setrlimit failed: " << strerror(errno) << std::endl; \
exit(1); \
} \
} while (0)
void
limit_memory(unsigned long bytes) {
struct rlimit t;
// Limit heap size.
LIMIT(RLIMIT_DATA);
// Limit resident set size.
LIMIT(RLIMIT_RSS);
// Limit mapped memory (brk + mmap).
//LIMIT(RLIMIT_VMEM);
// Limit virtual memory.
LIMIT(RLIMIT_AS);
}
int
main() try {
limit_memory(10000);
(void) new char[20000];
std::cout << "no exception thrown" << std::endl;
}
catch (std::bad_alloc) {
std::cout << "bad_alloc caught" << std::endl;
}
catch (...) {
std::cout << "unknown exception thrown" << std::endl;
}
$ g++ -W -Wall bug.cc
$ a.out
bad_alloc caught
$
--
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it
More information about the PPL-devel
mailing list