From: Gennadiy Rozental (gennadiy.rozental_at_[hidden])
Date: 2006-03-02 16:14:23
> In brief, the primary execution failure corrupts the program heap. When
> the C++ exception is thrown at execution_monitor:462, the exception
> handling mechanism calls __cxa_allocate_exception which then calls
> std::malloc. But, because of the corrupted heap, this call blocks
> against the malloc mutex.
Is there any way to avoid memory allocation? The exception itself doesn't
allocate the memory (namely for the reasons above). We just need to avoid
allocation on system level.
> This is the specific case with QNX, and other OSs will deal with this in
> different ways. The general point I would like to make is that after a
> memory segment violation, any process's memory will be in an undefined
> state and it is unreasonable to assume that it will be capable of
> continued execution as per the present design. I propose that there is
> no safe way to intercept a SIGSEGV and that it should be allowed to
> terminate the process without intervention.
You could disable catching system errors for this test or this configuration
(using either command line argument or environment variable). But be aware
that this may cause different problems for regression testing runs.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk