Re: [result] [vote] Release apr-1.7.0 ?

2019-04-04 Thread Dennis Clarke
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 ?

2019-04-04 Thread Rainer Jung

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 ?

2019-04-04 Thread William A Rowe Jr
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 ?

2019-04-04 Thread 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.

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 ?

2019-04-04 Thread William A Rowe Jr
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.
>