Re: [result] [vote] Release apr-1.7.0 ?
On 4/4/19 4:56 PM, Rainer Jung wrote: > Hi Dennis, > Thank you for the extensive details ! I arrived at a similar sort of discovery but I used a more brute force method. I did check sources to see that we had new symbols that did not previously exist and I did have apr headers on the system from a previous release. Well of course. There is the problem. All is well and httpd 2.4.39 is all built with new apr : beta $ file /usr/local/bin/httpd /usr/local/bin/httpd: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped beta $ /usr/local/bin/httpd -V Server version: Apache/2.4.39 (Unix) Server built: Apr 4 2019 21:13:56 Server's Module Magic Number: 20120211:84 Server loaded: APR 1.7.0, APR-UTIL 1.5.3 Compiled using: APR 1.7.0, APR-UTIL 1.5.3 Architecture: 64-bit Server MPM: event threaded: yes (fixed thread count) forked: yes (variable process count) Server compiled with -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_PROC_PTHREAD_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/usr/local" -D SUEXEC_BIN="/usr/local/bin/suexec" -D DEFAULT_PIDLOG="www/var/logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="www/conf/mime.types" -D SERVER_CONFIG_FILE="www/conf/httpd.conf" beta $ What baffles me is the APR-UTIL 1.5.3 version seen above. I am absolutely using 1.6.1 here. -- Dennis Clarke RISC-V/SPARC/PPC/ARM/CISC UNIX and Linux spoken GreyBeard and suspenders optional
Re: [result] [vote] Release apr-1.7.0 ?
Hi Dennis, Am 04.04.2019 um 20:32 schrieb Dennis Clarke: On 4/4/19 2:10 PM, William A Rowe Jr wrote: First off, thanks all who have contributed to the 1.6.0 -> 1.7.0 evolution in some large or small way. Secondly, thanks to all who reviewed. May not matter much at this point but on Solaris 10 sparc I saw this in tests : us=$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 ld.so.1: testlockperf: fatal: relocation error: file testlockperf: symbol apr_thread_mutex_timedlock: referenced symbol not found /bin/bash: line 2: 27221 Killed ./$prog -v . . . However I think Rainer Jung had no such problems. I will go take a look at my environment and see what went sideways. Note that I am using GCC, you are using the Sun/Oracle compiler, but I expect that to not matter here. I also assume your "make" step worked, ie. it didn't end with an error. Let's try to understand and track the root cause: First: % nm test/testlockperf | grep apr_thread_mutex_timedlock [111] |138752| 0|FUNC |GLOB |0|UNDEF |apr_thread_mutex_timedlock Aha, so the symbol apr_thread_mutex_timedlock is indeen not defined in test/testlockperf. But since it can be executed on my environment, it must be provided by a library used by test/testlockperf. Ah, the symbol name starts with "apr" so it might be the apr library. Let's look at the dependencies of the binary: % elfdump -d test/testlockperf Dynamic Section: .dynamic index tagvalue [0] NEEDED0x2bd libapr-1.so.0 [1] NEEDED0x2cb libuuid.so.1 [2] NEEDED0x2d8 libsendfile.so.1 [3] NEEDED0x2e9 librt.so.1 [4] NEEDED0x2f4 libsocket.so.1 [5] NEEDED0x303 libnsl.so.1 [6] NEEDED0x30f libpthread.so.1 [7] NEEDED0x2a7 libc.so.1 [8] INIT 0x1158c [9] FINI 0x115a8 [10] RUNPATH 0x31f /path/to/my/build/dir/.libs:/path/to/my/install/dir/lib [11] RPATH 0x31f /path/to/my/build/dir/.libs:/path/to/my/install/dir/lib [12] HASH 0x100e8 [13] STRTAB0x105d4 [14] STRSZ 0x3bd [15] SYMTAB0x10294 [16] SYMENT0x10 [17] CHECKSUM 0x2bac [18] VERNEED 0x10994 [19] VERNEEDNUM0x1 [20] PLTRELSZ 0x120 [21] PLTREL0x7 [22] JMPREL0x10a08 [23] RELA 0x109b4 [24] RELASZ0x174 [25] RELAENT 0xc [26] DEBUG 0 [27] FEATURE_1 0x1 [ PARINIT ] [28] FLAGS 0 0 [29] FLAGS_1 0 0 [30] PLTGOT0x21d94 [31] NULL 0 Details may vary, but we see, that testlockperf want the libraries libapr-1.so.0, ..., libc.so.1 and will look for them in /path/to/my/build/dir/.libs and if not found in /path/to/my/install/dir/lib. Here names and paths get important. The linker search paths for libraries can be influenced by setting eg. LD_LIBRARY_PATH. That will overwrite the search oath given in the binary. So if you eg. have set LD_LIBRARY_PATH and you have an older apr library (file libapr-1.so.0) there, e.g. a 1.6 version one, it might indeed not have all the symbols needed. So lets first check, whether our new APR library exist in the search oath and whether it contains the needed symbold: % ls -ld /path/to/my/build/dir/.libs/libapr-1.so.0 lrwxrwxrwx 1 jung kippdata 17 Apr 4 22:32 /path/to/my/build/dir/.libs/libapr-1.so.0 -> libapr-1.so.0.7.0 Aha it is just a symlink to the versioned file. But remember, the linker looks for libapr-1.so.0, not libapr-1.so.0.7.0 (the former is the SONAME of the library). Lets check for the real file: % ls -ld /path/to/my/build/dir/.libs/libapr-1.so* lrwxrwxrwx 1 jung kippdata 17 Apr 4 22:32 /path/to/my/build/dir/.libs/libapr-1.so -> libapr-1.so.0.7.0 lrwxrwxrwx 1 jung kippdata 17 Apr 4 22:32 /path/to/my/build/dir/.libs/libapr-1.so.0 -> libapr-1.so.0.7.0 -rwx-- 1 jung kippdata 1409256 Apr 2 23:56 /path/to/my/build/dir/.libs/libapr-1.so.0.7.0 OK, the real file is there as well.
Re: [result] [vote] Release apr-1.7.0 ?
Yes, please consult with Rainer, there are still hours to pull back and rework a 1.7.1 launch. Thanks for the very complete details. Please crosscheck if you are each speaking of opteron or sparc flavors. On Thu, Apr 4, 2019 at 1:32 PM Dennis Clarke wrote: > On 4/4/19 2:10 PM, William A Rowe Jr wrote: > > First off, thanks all who have contributed to the 1.6.0 -> 1.7.0 > evolution > > in some large or small way. Secondly, thanks to all who reviewed. > > > > May not matter much at this point but on Solaris 10 sparc I saw this in > tests : > > us=$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 > ld.so.1: testlockperf: fatal: relocation error: file testlockperf: > symbol apr_thread_mutex_timedlock: referenced symbol not found > /bin/bash: line 2: 27221 Killed ./$prog -v > . > . > . > > However I think Rainer Jung had no such problems. I will go take a look > at my environment and see what went sideways. > > Config was : > > > beta $ pwd > /usr/local/build/apr-1.7.0_SunOS5.10_sparc64vii+.001 > beta $ ./configure --prefix=/usr/local --enable-threads \ > > --enable-shared --enable-static \ > > --enable-other-child --with-devrandom=/dev/urandom \ > > --enable-posix-shm > checking build system type... sparc-sun-solaris2.10 > checking host system type... sparc-sun-solaris2.10 > checking target system type... sparc-sun-solaris2.10 > Configuring APR library > Platform: sparc-sun-solaris2.10 > checking for working mkdir -p... yes > APR Version: 1.7.0 > checking for chosen layout... apr > checking for gcc... /opt/developerstudio12.6/bin/cc > checking whether the C compiler works... yes > checking for C compiler default output file name... a.out > checking for suffix of executables... > checking whether we are cross compiling... no > checking for suffix of object files... o > checking whether we are using the GNU C compiler... no > checking whether /opt/developerstudio12.6/bin/cc accepts -g... yes > checking for /opt/developerstudio12.6/bin/cc option to accept ISO C89... > none needed > checking for a sed that does not truncate output... /usr/xpg4/bin/sed > Applying APR hints file rules for sparc-sun-solaris2.10 > adding "-DSOLARIS2=10" to CPPFLAGS > adding "-D_REENTRANT" to CPPFLAGS > setting ac_cv_func_pthread_mutex_timedlock to "no" > setting apr_lock_method to "USE_PROC_PTHREAD_SERIALIZE" > setting ac_cv_func_readdir64_r to "no" > (Default will be unix) > checking whether make sets $(MAKE)... yes > checking how to run the C preprocessor... /opt/developerstudio12.6/bin/cc > -E > checking for gawk... no > checking for mawk... no > checking for nawk... nawk > checking whether ln -s works... yes > checking for ranlib... ranlib > checking for a BSD-compatible install... build/install.sh -c > checking for rm... rm > checking for as... as > checking for cpp... no > checking for ar... ar > checking for grep that handles long lines and -e... /usr/xpg4/bin/grep > checking for egrep... /usr/xpg4/bin/grep -E > checking for ANSI C header files... yes > checking for sys/types.h... yes > checking for sys/stat.h... yes > checking for stdlib.h... yes > checking for string.h... yes > checking for memory.h... yes > checking for strings.h... yes > checking for inttypes.h... yes > checking for stdint.h... yes > checking for unistd.h... yes > checking minix/config.h usability... no > checking minix/config.h presence... no > checking for minix/config.h... no > checking whether it is safe to define __EXTENSIONS__... yes > checking for library containing strerror... none required > checking whether system uses EBCDIC... no > performing libtool configuration... > checking how to print strings... printf > checking for a sed that does not truncate output... (cached) > /usr/xpg4/bin/sed > checking for fgrep... /usr/xpg4/bin/grep -F > checking for non-GNU ld... /usr/ccs/bin/sparcv9/ld > checking if the linker (/usr/ccs/bin/sparcv9/ld) is GNU ld... no > checking for BSD- or MS-compatible name lister (nm)... /usr/xpg4/bin/nm -p > checking the name lister (/usr/xpg4/bin/nm -p) interface... BSD nm > checking the maximum length of command line arguments... 786240 > checking how to convert sparc-sun-solaris2.10 file names to > sparc-sun-solaris2.10 format... func_convert_file_noop > checking how to convert sparc-sun-solaris2.10 file names to toolchain > format... func_convert_file_noop > checking for /usr/ccs/bin/sparcv9/ld option to reload object files... -r > checking for objdump... objdump > checking how to recognize dependent
Re: [result] [vote] Release apr-1.7.0 ?
On 4/4/19 2:10 PM, William A Rowe Jr wrote: > First off, thanks all who have contributed to the 1.6.0 -> 1.7.0 evolution > in some large or small way. Secondly, thanks to all who reviewed. > May not matter much at this point but on Solaris 10 sparc I saw this in tests : us=$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 ld.so.1: testlockperf: fatal: relocation error: file testlockperf: symbol apr_thread_mutex_timedlock: referenced symbol not found /bin/bash: line 2: 27221 Killed ./$prog -v . . . However I think Rainer Jung had no such problems. I will go take a look at my environment and see what went sideways. Config was : beta $ pwd /usr/local/build/apr-1.7.0_SunOS5.10_sparc64vii+.001 beta $ ./configure --prefix=/usr/local --enable-threads \ > --enable-shared --enable-static \ > --enable-other-child --with-devrandom=/dev/urandom \ > --enable-posix-shm checking build system type... sparc-sun-solaris2.10 checking host system type... sparc-sun-solaris2.10 checking target system type... sparc-sun-solaris2.10 Configuring APR library Platform: sparc-sun-solaris2.10 checking for working mkdir -p... yes APR Version: 1.7.0 checking for chosen layout... apr checking for gcc... /opt/developerstudio12.6/bin/cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... no checking whether /opt/developerstudio12.6/bin/cc accepts -g... yes checking for /opt/developerstudio12.6/bin/cc option to accept ISO C89... none needed checking for a sed that does not truncate output... /usr/xpg4/bin/sed Applying APR hints file rules for sparc-sun-solaris2.10 adding "-DSOLARIS2=10" to CPPFLAGS adding "-D_REENTRANT" to CPPFLAGS setting ac_cv_func_pthread_mutex_timedlock to "no" setting apr_lock_method to "USE_PROC_PTHREAD_SERIALIZE" setting ac_cv_func_readdir64_r to "no" (Default will be unix) checking whether make sets $(MAKE)... yes checking how to run the C preprocessor... /opt/developerstudio12.6/bin/cc -E checking for gawk... no checking for mawk... no checking for nawk... nawk checking whether ln -s works... yes checking for ranlib... ranlib checking for a BSD-compatible install... build/install.sh -c checking for rm... rm checking for as... as checking for cpp... no checking for ar... ar checking for grep that handles long lines and -e... /usr/xpg4/bin/grep checking for egrep... /usr/xpg4/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking for library containing strerror... none required checking whether system uses EBCDIC... no performing libtool configuration... checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/xpg4/bin/sed checking for fgrep... /usr/xpg4/bin/grep -F checking for non-GNU ld... /usr/ccs/bin/sparcv9/ld checking if the linker (/usr/ccs/bin/sparcv9/ld) is GNU ld... no checking for BSD- or MS-compatible name lister (nm)... /usr/xpg4/bin/nm -p checking the name lister (/usr/xpg4/bin/nm -p) interface... BSD nm checking the maximum length of command line arguments... 786240 checking how to convert sparc-sun-solaris2.10 file names to sparc-sun-solaris2.10 format... func_convert_file_noop checking how to convert sparc-sun-solaris2.10 file names to toolchain format... func_convert_file_noop checking for /usr/ccs/bin/sparcv9/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... dlltool checking how to associate runtime and link libraries... printf %s\n checking for archiver @FILE support... no checking for strip... strip checking for ranlib... (cached) ranlib checking command to parse /usr/xpg4/bin/nm -p output from /opt/developerstudio12.6/bin/cc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... mt
[result] [vote] Release apr-1.7.0 ?
First off, thanks all who have contributed to the 1.6.0 -> 1.7.0 evolution in some large or small way. Secondly, thanks to all who reviewed. Steffan's concerns are noted, and the resolution does not appear to be binary breakage, so we should be safe. Shout loudly and quickly if I misunderstood. It's concerning that we should possibly re-describe this mechanism as a 64-less-one-bit unsigned API. For the purposes it was imagined for, I expect it's sufficient. My own tests are largely on Fedora and I'm +1 on the result, and very grateful for Gregg for the windows dsp/makefile refresh. I observed Yann's feedback which I agree with on the change of locking priority in the announcement, I'm still hoping someone from the Netware maintainers community will comment on that specific communication in the draft Announcement before it goes out tomorrow. So with all this said, the vote passes unanimously, and I'm moving the files to release/ about 10 minutes late, and will announce when the mirrors have populated tomorrow. Again, thanks everyone, we can start a fresh thread on apr-util 1.next, or the entire kitchen sink of releasing 2.0 on the tail of this small effort. Cheers, Bill On Mon, Apr 1, 2019 at 1:01 PM William A Rowe Jr wrote: > Candidate tarballs are at the usual location; > https://apr.apache.org/dev/dist/ > > For the release of apr-1.7.0 > [ ] +1 looks great! > [ ] -1 something is broken > > This vote will conclude April 4th 2pm EDT, for potential > announcement Friday. > > I could use a hand from Netware folk to explain the potential for > binary breakage in os locks to end users for our Announcement, > not that this ever really worked in the first place AIUI. >