niedziela, 22 maja 2011

Memory allocation checking

Here is list how to check for memory allocation problems (leaks, writing past buffer, etc.)

glibc based:
- mcheck(), mprobe() functions and MALLOC_CHECK_ env. variable (see 'man malloc' and

- mtrace() function and 'mtrace' command

- glibc-utils (mtrace, xtrace, memusage, ...)

gcc based:
- Mudflap Pointer Debugging

- GCC extensions: Bounds checking patches, ProPolice Stack-Smashing Protector
One thing is not clear here - there is option -fbounds-check which seems to compile in gcc (does it work?) and 'bounds checking patches' which gives -fbounds-checking option.

One and only:
- valgrind

Other free solutions:
- Electric fence

- DUMA library

- Memwatch

- halloc - not really a checker but useful

- Insure++

- Purify (IBM-Rational)

There is basic question - maybe design approach should be different e.g.:
- allocate memory on startup (pool)
- use sentry to check if tasks release objects allocated on pool

niedziela, 15 maja 2011

Here are potentially useful libraries used in Samba project.

TDB (Trivial DataBase)
"In concept, it is very much like GDBM, and BSD's DB except that it allows multiple simultaneous writers and uses locking internally to keep writers from trampling on each other. tdb is also extremely small."
It has added transactions support.

"Hierarchical, reference counted memory pool system with destructors. It is the core memory allocator used in Samba (LGPL)."
man 3 talloc

"Tevent is an event system based on the talloc memory management library."

All Samba related sub-projects one can find at under "Related Sites".

Additionally here is page with junk code form Samba author:
More description of junk code in conference materials.
Especially worth mentioning is 'segv_handler'.

Parallel mode extensions in gcc standard c++ library

Approach based on OpenMP. Here is info regarding the extension: