apr: Failed Creating Threads

There is a potential segmentation fault when executing ‘make test’ while building apr-1.7.0. The following lines are output:

...
testatomic          : -Line 413: Failed creating threads
-/bin/sh: line 2: XXXXX Segmentation fault      ./$prog -v
...
Programs failed: testall
make[1]: *** [check] Error 139
make[1]: Leaving directory `.../apr-1.7.0/test'
make: *** [check] Error 2

The segmentation fault is caused by a call to apr_thread_join() on an invalid apr_thread_t instance in test_atomics_threaded(). The problematic functions, test_atomics_threaded() and test_atomics_threaded64(), continue processing even when apr_thread_create() returns an error value.

The segmentation fault is avoided and the remaining tests are executed if either of the following is performed on …/apr-1.7.0/test/testatomic.c:

1. Comment out the following lines:

abts_run_test(suite, test_atomics_threaded, NULL);
abts_run_test(suite, test_atomics_threaded64, NULL);

2. Update NUM_THREADS with a smaller number, for example:

#define NUM_THREADS 25

A lack of memory resources is the underlying cause of this segmentation fault. Reducing the number of threads created for these tests allows testing the atomic operations as intended.

Questions, comments, and responses are welcomed and appreciated.

Leave a Reply