On Wed, Apr 26, 2017 at 4:07 AM, Nick Kew <n...@apache.org> wrote: > > A minimalist approach is Good. But when you say minimalist, do you > mean minimalist efforts as in "this should work out-of-the-box" > or minimalist efforts as in a README.platform? Are we likely > looking at more code commits?
Point of reference, I've ever bothered with gcc on AIX or HPUX, simply use native compilers and linkers, but either aught to work. Starting minimalist on AIX6.1, enabling timedlocks. Both the gnu toolchain in freeware as well as the modern xlc compiler are all in the path; PATH=/usr/vac/bin:/usr/ccs/bin:/usr/local/bin:/opt/freeware/bin:/usr/sbin:/usr/bin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java6_64/bin ./configure --enable-timedlocks Right off the bat we find new rpm hokum in our configure; rpm_share: 0645-025 Unable to locate command module tar. rpm_share: 0645-007 ATTENTION: init_baselib() returned an unexpected result. (there is IBM tar as well as gtar in that path). These are just unwarranted stderr warnings, so no crisis yet. gcc/gnu toolchain is detected build is successful, no warnings or errors. make test is a bit of a mess, here are just the stderr observations; Line 61: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 77: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 102: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 126: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 147: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 163: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 188: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 212: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 93: Creation of large file (rlimit, quota or fs) Line 114: Large file tests not enabled Line 133: Large file tests not enabled Line 146: Large file tests not enabled Line 204: Large file tests not enabled Line 179: Large file tests not enabled Line 232: Large file tests not enabled Line 259: Large file tests not enabled Line 286: Large file tests not enabled Line 302: Large file tests not enabled Line 584: pollcb interface not supported Line 611: pollcb interface not supported Line 637: pollcb interface not supported Line 653: pollcb interface not supported Line 836: pollcb interface not supported Line 733: pollcb interface not supported Line 206: default_timedlock() should time out => Connection timed out Line 206: sysvsem_timedlock() should time out => Connection timed out Line 206: default_timed_timedlock() should time out => Connection timed out Line 116: Problem generating sockaddr (670008): Hostname and service name not provided or found Line 389: expected something other than <0>, but saw <0> Line 433: Cannot test if connect completes synchronously Line 84: TCP isn't corkable make: 1254-004 The error code from the last command is 1. Stop. make: 1254-004 The error code from the last command is 2. Stop. The stdout test results; teststatus=0; progfailed=""; for prog in testlockperf testmutexscope testall sendfile ; do if test "$prog" = 'sendfile'; then for mode in blocking nonblocking timeout; do ./$prog client $mode startserver 127.0.0.1; status=$?; if test $status != 0; then teststatus=$status; progfailed="$progfailed '$prog mode $mode'"; fi; done; else ./$prog -v; status=$?; if test $status != 0; then teststatus=$status; progfailed="$progfailed $prog"; fi; fi; done; if test $teststatus != 0; then echo "Programs failed:$progfailed"; fi; exit $teststatus APR Lock Performance Test ============== apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 1 threads OK microseconds: 278207 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 1 threads OK microseconds: 287077 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 1 threads OK microseconds: 1356383 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 1 threads OK microseconds: 398026 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 2 threads OK microseconds: 1808399 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 2 threads OK microseconds: 2053316 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 2 threads OK microseconds: 1595797 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 2 threads OK microseconds: 2207305 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 3 threads OK microseconds: 2026627 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 3 threads OK microseconds: 2038563 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 3 threads OK microseconds: 2380387 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 3 threads OK microseconds: 7393111 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 4 threads OK microseconds: 2756837 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 4 threads OK microseconds: 2667726 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 4 threads OK microseconds: 3643844 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 4 threads OK microseconds: 19533536 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 5 threads OK microseconds: 4020024 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 5 threads OK microseconds: 3701148 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 5 threads OK microseconds: 3501648 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 5 threads OK microseconds: 30114925 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 6 threads OK microseconds: 3502252 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 6 threads OK microseconds: 4914747 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 6 threads OK microseconds: 4248309 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 6 threads OK microseconds: 38295396 usec Trying proc mutexes with mechanism `default'... mutex mechanism `default' is global in scope on this platform. Trying global mutexes with mechanism `default'... no problem encountered... Trying proc mutexes with mechanism `sysvsem'... mutex mechanism `sysvsem' is global in scope on this platform. Trying global mutexes with mechanism `sysvsem'... no problem encountered... Trying proc mutexes with mechanism `posix'... mutex mechanism `posix' is global in scope on this platform. Trying global mutexes with mechanism `posix'... no problem encountered... Trying proc mutexes with mechanism `fcntl'... mutex mechanism `fcntl' is *NOT* global in scope on this platform. Trying global mutexes with mechanism `fcntl'... no problem encountered... Trying proc mutexes with mechanism `proc_pthread'... mutex mechanism `proc_pthread' is global in scope on this platform. Trying global mutexes with mechanism `proc_pthread'... no problem encountered... Trying proc mutexes with mechanism `default_timed'... mutex mechanism `default_timed' is global in scope on this platform. Trying global mutexes with mechanism `default_timed'... no problem encountered... testatomic : SUCCESS testdir : SUCCESS testdso : FAILED 8 of 9 testdup : SUCCESS testenv : SUCCESS testescape : SUCCESS testfile : SUCCESS testfilecopy : SUCCESS testfileinfo : SUCCESS testflock : SUCCESS testfmt : SUCCESS testfnmatch : SUCCESS testargs : SUCCESS testhash : SUCCESS testipsub : SUCCESS testlock : SUCCESS testcond : SUCCESS testlfs : SUCCESS testmmap : SUCCESS testnames : SUCCESS testoc : SUCCESS testpath : SUCCESS testpipe : SUCCESS testpoll : SUCCESS testpools : SUCCESS testproc : SUCCESS testprocmutex : FAILED 3 of 6 testrand : SUCCESS testsleep : SUCCESS testshm : SUCCESS testsock : FAILED 2 of 16 testsockets : SUCCESS testsockopt : SUCCESS teststr : SUCCESS teststrnatcmp : SUCCESS testtable : SUCCESS testtemp : SUCCESS testthread : SUCCESS testtime : SUCCESS testud : SUCCESS testuser : SUCCESS testvsn : SUCCESS testskiplist : SUCCESS Failed Tests Total Fail Failed % =================================================== testdso 9 8 88.89% testprocmutex 6 3 50.00% testsock 16 2 12.50% The less-than-straightforward build is due to crazy AIX quirks convincing their xlc/ccs toolchains to emit anything that is 64 bit on a 64 bit build box; MAKE=gmake NM="nm -B -X64" AR="ar -X64" CC="xlc_r -qarch=pwr5 -qtune=pwr6 -q64" LD="xlc_r -qarch=pwr5 -qtune=pwr6 -q64" CFLAGS="-O2 -qmaxmem=32768 -g " LDFLAGS="-Wl,-brtl" SH_LDFLAGS="-G" ../apr-1.6/configure --build=powerpc64-ibm-aix6.1.6.0 --without-gnu-ld --enable-timedlocks Problems seem to lie in sctp.h again; configure: WARNING: netinet/sctp.h: present but cannot be compiled configure: WARNING: netinet/sctp.h: check for missing prerequisite headers? configure: WARNING: netinet/sctp.h: see the Autoconf documentation configure: WARNING: netinet/sctp.h: section "Present But Cannot Be Compiled" configure: WARNING: netinet/sctp.h: proceeding with the preprocessor's result configure: WARNING: netinet/sctp.h: in the future, the compiler will take precedence configure: WARNING: ## ------------------------------------------ ## configure: WARNING: ## Report this to the AC_PACKAGE_NAME lists. ## configure: WARNING: ## ------------------------------------------ ## The actual delta between the two configure attempts; $ diff gcc.configure.log xlc.configure.log 1,3c1,3 < checking build system type... powerpc-ibm-aix6.1.6.0 < checking host system type... powerpc-ibm-aix6.1.6.0 < checking target system type... powerpc-ibm-aix6.1.6.0 --- > checking build system type... powerpc64-ibm-aix6.1.6.0 > checking host system type... powerpc64-ibm-aix6.1.6.0 > checking target system type... powerpc64-ibm-aix6.1.6.0 5c5 < Platform: powerpc-ibm-aix6.1.6.0 --- > Platform: powerpc64-ibm-aix6.1.6.0 9c9 < checking for gcc... gcc --- > checking for gcc... xlc_r -qarch=pwr5 -qtune=pwr6 -q64 15,17c15,17 < checking whether we are using the GNU C compiler... yes < checking whether gcc accepts -g... yes < checking for gcc option to accept ANSI C... none needed --- > checking whether we are using the GNU C compiler... no > checking whether xlc_r -qarch=pwr5 -qtune=pwr6 -q64 accepts -g... yes > checking for xlc_r -qarch=pwr5 -qtune=pwr6 -q64 option to accept ANSI C... > none needed 19c19 < Applying APR hints file rules for powerpc-ibm-aix6.1.6.0 --- > Applying APR hints file rules for powerpc64-ibm-aix6.1.6.0 20a21,22 > setting AIX_XLC to "yes" > adding "-qHALT=E" to CFLAGS 23d24 < setting LDFLAGS to "-Wl,-brtl" 25,26c26,27 < checking whether make sets $(MAKE)... yes < checking how to run the C preprocessor... gcc -E --- > checking whether gmake sets $(MAKE)... yes > checking how to run the C preprocessor... xlc_r -qarch=pwr5 -qtune=pwr6 -q64 > -E 56,59c57,60 < checking for ld used by gcc... /usr/bin/ld < checking if the linker (/usr/bin/ld) is GNU ld... no < checking for /usr/bin/ld option to reload object files... -r < checking for BSD-compatible nm... /usr/ccs/bin/nm -B --- > checking for non-GNU ld... /usr/ccs/bin/ld > checking if the linker (/usr/ccs/bin/ld) is GNU ld... no > checking for /usr/ccs/bin/ld option to reload object files... -r > checking for BSD-compatible nm... nm -B -X64 102c103 < checking command to parse /usr/ccs/bin/nm -B output from gcc object... ok --- > checking command to parse nm -B -X64 output from xlc_r -qarch=pwr5 > -qtune=pwr6 -q64 object... ok 107,111c108,111 < checking if gcc supports -fno-rtti -fno-exceptions... no < checking for gcc option to produce PIC... < checking if gcc static flag -static works... no < checking if gcc supports -c -o file.o... yes < checking whether the gcc linker (/usr/bin/ld) supports shared libraries... no --- > checking for xlc_r -qarch=pwr5 -qtune=pwr6 -q64 option to produce PIC... > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 static flag -bnso > -bI:/lib/syscalls.exp works... no > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 supports -c -o file.o... yes > checking whether the xlc_r -qarch=pwr5 -qtune=pwr6 -q64 linker (xlc_r > -qarch=pwr5 -qtune=pwr6 -q64) supports shared libraries... no 123,125c123,129 < checking whether the compiler provides atomic builtins... yes < checking whether to enable -D_LARGEFILE64_SOURCE... yes < adding "-D_LARGEFILE64_SOURCE" to CPPFLAGS --- > checking whether the compiler provides atomic builtins... no > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 -MM can create proper make > dependencies... no > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 -M can create proper make > dependencies... no > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 -E -MM can create proper make > dependencies... no > checking if xlc_r -qarch=pwr5 -qtune=pwr6 -q64 -E -M can create proper make > dependencies... no > checking if cpp -M can create proper make dependencies... yes > checking whether to enable -D_LARGEFILE64_SOURCE... no 139,140c143 < checking for CFLAGS needed for pthreads... -pthread < adding "-pthread" to CFLAGS --- > checking for CFLAGS needed for pthreads... none 248c251,252 < checking size of void*... 4 --- > checking size of void*... 8 > sendfile support disabled to avoid system problem 449c453 < checking size of void*... (cached) 4 --- > checking size of void*... (cached) 8 455c459 < checking size of long... 4 --- > checking size of long... 8 463c467 < checking whether ssize_t and long are the same... yes --- > checking whether ssize_t and long are the same... no 465,466c469,470 < checking whether size_t and unsigned long are the same... yes < checking size of ssize_t... 4 --- > checking whether size_t and unsigned long are the same... no > checking size of ssize_t... 8 468,478c472,477 < checking size of size_t... 4 < checking which format to use for apr_size_t... %lu < checking size of off_t... 4 < checking for mmap64... yes < checking for sendfile64... no < checking for sendfilev64... no < checking for readdir64_r... yes < checking for mkstemp64... yes < checking which type to use for apr_off_t... off64_t < checking size of ino_t... 4 < configure: using unsigned long for ino_t --- > checking size of size_t... 8 > checking which format to use for apr_size_t... %ld > checking size of off_t... 8 > checking which type to use for apr_off_t... off_t > checking size of ino_t... 8 > configure: using ino_t for ino_t 480c479 < checking size of struct iovec... 8 --- > checking size of struct iovec... 16 488c487 < checking for strtoll... yes --- > checking for strtol... yes 608,612c607,611 < setting EXTRA_CPPFLAGS to "-U__STR__ -D_THREAD_SAFE -D_LARGEFILE64_SOURCE" < restoring CFLAGS to "" < setting EXTRA_CFLAGS to "-g -O2 -pthread" < restoring LDFLAGS to "" < setting EXTRA_LDFLAGS to "-Wl,-brtl" --- > setting EXTRA_CPPFLAGS to "-U__STR__ -D_THREAD_SAFE" > restoring CFLAGS to "-O2 -qmaxmem=32768 -g " > setting EXTRA_CFLAGS to " -qHALT=E" > restoring LDFLAGS to "-Wl,-brtl" > setting EXTRA_LDFLAGS to "" Some of the specific emits relating to threading and mutexes commmon to both attempts; Checking for Locking... checking for semget... yes checking for semctl... yes checking for semop... yes checking for semtimedop... yes checking for flock... no checking for semaphore.h... (cached) yes checking for library containing sem_open... none required checking for sem_close... yes checking for sem_unlink... yes checking for sem_post... yes checking for sem_wait... yes checking for sem_timedwait... yes checking OS.h usability... no checking OS.h presence... no checking for OS.h... no checking for create_sem... no checking for acquire_sem... no checking for acquire_sem_etc... no checking for working sem_open... yes checking for union semun in sys/sem.h... no checking for LOCK_EX in sys/file.h... yes checking for F_SETLK in fcntl.h... yes checking for SEM_UNDO in sys/sem.h... yes checking for POLLIN in poll.h sys/poll.h... yes checking for PTHREAD_PROCESS_SHARED in pthread.h... yes checking for pthread_mutex_timedlock... yes checking for pthread_mutexattr_setpshared... yes checking for working PROCESS_SHARED locks... yes checking for robust cross-process mutex support... no checking for pthread_condattr_setpshared... yes decision on apr_lock implementation method... SysV IPC semget() checking if fcntl returns EACCES when F_SETLK is already held... yes checking if all interprocess locks affect threads... no checking if POSIX sems affect threads in the same process... no checking if SysV sems affect threads in the same process... yes checking if fcntl locks affect threads in the same process... no checking if flock locks affect threads in the same process... no checking for entropy source... /dev/urandom Test results, stderr first again; 52 1500-010: (W) WARNING in main: Infinite loop. Program may not stop. 19 1500-010: (W) WARNING in main: Infinite loop. Program may not stop. Line 61: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 77: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 102: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 126: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 147: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 163: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 188: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 212: 0509-022 Cannot load module /home/hudson/workspace/apr-1.6/test/.libs/libmod_test.so. 0509-026 System error: A file or directory in the path name does not exist. Line 349: LFS support a no-op in 64-bit builds Line 584: pollcb interface not supported Line 611: pollcb interface not supported Line 637: pollcb interface not supported Line 653: pollcb interface not supported Line 836: pollcb interface not supported Line 733: pollcb interface not supported Line 206: default_timedlock() should time out => Connection timed out Line 206: sysvsem_timedlock() should time out => Connection timed out Line 206: default_timed_timedlock() should time out => Connection timed out Line 116: Problem generating sockaddr (670008): Hostname and service name not provided or found Line 389: expected something other than <0>, but saw <0> Line 433: Cannot test if connect completes synchronously Line 84: TCP isn't corkable make: 1254-004 The error code from the last command is 1. Stop. make: 1254-004 The error code from the last command is 2. Stop. Test results from 64-bit xlc AIX; teststatus=0; progfailed=""; for prog in testlockperf testmutexscope testall sendfile ; do if test "$prog" = 'sendfile'; then for mode in blocking nonblocking timeout; do ./$prog client $mode startserver 127.0.0.1; status=$?; if test $status != 0; then teststatus=$status; progfailed="$progfailed '$prog mode $mode'"; fi; done; else ./$prog -v; status=$?; if test $status != 0; then teststatus=$status; progfailed="$progfailed $prog"; fi; fi; done; if test $teststatus != 0; then echo "Programs failed:$progfailed"; fi; exit $teststatus APR Lock Performance Test ============== apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 1 threads OK microseconds: 310018 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 1 threads OK microseconds: 315272 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 1 threads OK microseconds: 563044 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 1 threads OK microseconds: 380313 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 2 threads OK microseconds: 1897984 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 2 threads OK microseconds: 822725 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 2 threads OK microseconds: 831952 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 2 threads OK microseconds: 1509737 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 3 threads OK microseconds: 1440199 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 3 threads OK microseconds: 2356049 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 3 threads OK microseconds: 1959389 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 3 threads OK microseconds: 6620914 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 4 threads OK microseconds: 2393626 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 4 threads OK microseconds: 3042968 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 4 threads OK microseconds: 3907215 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 4 threads OK microseconds: 19608376 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 5 threads OK microseconds: 2717510 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 5 threads OK microseconds: 4320005 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 5 threads OK microseconds: 4512658 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 5 threads OK microseconds: 30609930 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 6 threads OK microseconds: 5001631 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 6 threads OK microseconds: 3593701 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (TIMED) OK Starting 6 threads OK microseconds: 6252176 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 6 threads OK microseconds: 41184920 usec Trying proc mutexes with mechanism `default'... mutex mechanism `default' is global in scope on this platform. Trying global mutexes with mechanism `default'... no problem encountered... Trying proc mutexes with mechanism `sysvsem'... mutex mechanism `sysvsem' is global in scope on this platform. Trying global mutexes with mechanism `sysvsem'... no problem encountered... Trying proc mutexes with mechanism `posix'... mutex mechanism `posix' is global in scope on this platform. Trying global mutexes with mechanism `posix'... no problem encountered... Trying proc mutexes with mechanism `fcntl'... mutex mechanism `fcntl' is *NOT* global in scope on this platform. Trying global mutexes with mechanism `fcntl'... no problem encountered... Trying proc mutexes with mechanism `proc_pthread'... mutex mechanism `proc_pthread' is global in scope on this platform. Trying global mutexes with mechanism `proc_pthread'... no problem encountered... Trying proc mutexes with mechanism `default_timed'... mutex mechanism `default_timed' is global in scope on this platform. Trying global mutexes with mechanism `default_timed'... no problem encountered... testatomic : SUCCESS testdir : SUCCESS testdso : FAILED 8 of 9 testdup : SUCCESS testenv : SUCCESS testescape : SUCCESS testfile : SUCCESS testfilecopy : SUCCESS testfileinfo : SUCCESS testflock : SUCCESS testfmt : SUCCESS testfnmatch : SUCCESS testargs : SUCCESS testhash : SUCCESS testipsub : SUCCESS testlock : SUCCESS testcond : SUCCESS testlfs : SUCCESS testmmap : SUCCESS testnames : SUCCESS testoc : SUCCESS testpath : SUCCESS testpipe : SUCCESS testpoll : SUCCESS testpools : SUCCESS testproc : SUCCESS testprocmutex : FAILED 3 of 6 testrand : SUCCESS testsleep : SUCCESS testshm : SUCCESS testsock : FAILED 2 of 16 testsockets : SUCCESS testsockopt : SUCCESS teststr : SUCCESS teststrnatcmp : SUCCESS testtable : SUCCESS testtemp : SUCCESS testthread : SUCCESS testtime : SUCCESS testud : SUCCESS testuser : SUCCESS testvsn : SUCCESS testskiplist : SUCCESS Failed Tests Total Fail Failed % =================================================== testdso 9 8 88.89% testprocmutex 6 3 50.00% testsock 16 2 12.50% The obvious question, what is new since 1.5.2? New tests, for one, new misbehavior as well; the prior results from a recent product build with APR 1.5.2; teststatus=0; \ progfailed=""; \ for prog in testlockperf testmutexscope testall sendfile ; do \ if test "$prog" = 'sendfile'; then \ for mode in blocking nonblocking timeout; do \ ./$prog client $mode startserver 127.0.0.1; \ status=$?; \ if test $status != 0; then \ teststatus=$status; \ progfailed="$progfailed '$prog mode $mode'"; \ fi; \ done; \ else \ ./$prog -v; \ status=$?; \ if test $status != 0; then \ teststatus=$status; \ progfailed="$progfailed $prog"; \ fi; \ fi; \ done; \ if test $teststatus != 0; then \ echo "Programs failed:$progfailed"; \ fi; \ exit $teststatus APR Lock Performance Test ============== apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 1 threads OK microseconds: 231557 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 1 threads OK microseconds: 236112 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 1 threads OK microseconds: 439320 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 2 threads OK microseconds: 649729 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 2 threads OK microseconds: 794767 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 2 threads OK microseconds: 1966800 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 3 threads OK microseconds: 1954095 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 3 threads OK microseconds: 1648285 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 3 threads OK microseconds: 6853713 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 4 threads OK microseconds: 2883942 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 4 threads OK microseconds: 2447592 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 4 threads OK microseconds: 20957603 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 5 threads OK microseconds: 2871582 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 5 threads OK microseconds: 3501802 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 5 threads OK microseconds: 30135067 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (UNNESTED) OK Starting 6 threads OK microseconds: 3285807 usec apr_thread_mutex_t Tests Initializing the apr_thread_mutex_t (NESTED) OK Starting 6 threads OK microseconds: 3994937 usec apr_thread_rwlock_t Tests Initializing the apr_thread_rwlock_t OK Starting 6 threads OK microseconds: 41736873 usec Trying proc mutexes with mechanism `default'... Mutex mechanism `default' is global in scope on this platform. Trying global mutexes with mechanism `default'... no problems encountered... Trying proc mutexes with mechanism `sysvsem'... Mutex mechanism `sysvsem' is global in scope on this platform. Trying global mutexes with mechanism `sysvsem'... no problems encountered... Trying proc mutexes with mechanism `posix'... Mutex mechanism `posix' is global in scope on this platform. Trying global mutexes with mechanism `posix'... no problems encountered... Trying proc mutexes with mechanism `fcntl'... Mutex mechanism `fcntl' is not global in scope on this platform. Trying global mutexes with mechanism `fcntl'... no problems encountered... Trying proc mutexes with mechanism `proc_pthread'... Mutex mechanism `proc_pthread' is global in scope on this platform. Trying global mutexes with mechanism `proc_pthread'... no problems encountered... testatomic : SUCCESS testdir : SUCCESS testdso : SUCCESS testdup : SUCCESS testenv : SUCCESS testescape : SUCCESS testfile : SUCCESS testfilecopy : SUCCESS testfileinfo : SUCCESS testflock : SUCCESS testfmt : SUCCESS testfnmatch : SUCCESS testargs : SUCCESS testhash : SUCCESS testipsub : SUCCESS testlock : SUCCESS testcond : SUCCESS testlfs : Line 345: Large Files not supported SUCCESS testmmap : SUCCESS testnames : SUCCESS testoc : SUCCESS testpath : SUCCESS testpipe : SUCCESS testpoll : Line 584: pollcb interface not supported Line 611: pollcb interface not supported Line 637: pollcb interface not supported Line 653: pollcb interface not supported Line 733: pollcb interface not supported SUCCESS testpools : SUCCESS testproc : SUCCESS testprocmutex : SUCCESS testrand : SUCCESS testsleep : SUCCESS testshm : SUCCESS testsock : Line 333: expected something other than <0>, but saw <0> Line 377: Cannot test if connect completes synchronously FAILED 1 of 10 testsockets : SUCCESS testsockopt : Line 84: TCP isn't corkable SUCCESS teststr : SUCCESS teststrnatcmp : SUCCESS testtable : SUCCESS testtemp : SUCCESS testthread : SUCCESS testtime : SUCCESS testud : SUCCESS testuser : SUCCESS testvsn : SUCCESS testskiplist : SUCCESS Failed Tests Total Fail Failed % =================================================== testsock 10 1 10.00% This program won't work on this platform because there is no support for sendfile(). This program won't work on this platform because there is no support for sendfile(). This program won't work on this platform because there is no support for sendfile().