* [Buildroot] [PATCH 1/1] apr: fix size of pid_t @ 2017-03-21 13:23 Julien Beraud 2017-03-21 22:04 ` Thomas Petazzoni 0 siblings, 1 reply; 4+ messages in thread From: Julien Beraud @ 2017-03-21 13:23 UTC (permalink / raw) To: buildroot pid_t is a signed 32bits integer on both 32bits and 64bits architectures. This fixes an issue with apache server which causes bad pid to be written in PidFile Signed-off-by: Julien Beraud <julien.beraud@spectracom.orolia.com> --- package/apr/apr.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/apr/apr.mk b/package/apr/apr.mk index 361a79f99..f09f94368 100644 --- a/package/apr/apr.mk +++ b/package/apr/apr.mk @@ -22,6 +22,7 @@ APR_CONF_ENV = \ apr_cv_mutex_robust_shared=no \ apr_cv_tcp_nodelay_with_cork=yes \ ac_cv_sizeof_struct_iovec=8 \ + ac_cv_sizeof_pid_t=4 \ ac_cv_struct_rlimit=yes \ ac_cv_o_nonblock_inherited=no \ apr_cv_mutex_recursive=yes -- 2.11.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] apr: fix size of pid_t 2017-03-21 13:23 [Buildroot] [PATCH 1/1] apr: fix size of pid_t Julien Beraud @ 2017-03-21 22:04 ` Thomas Petazzoni 2017-03-22 10:51 ` Julien Béraud 2017-03-30 22:32 ` Peter Korsgaard 0 siblings, 2 replies; 4+ messages in thread From: Thomas Petazzoni @ 2017-03-21 22:04 UTC (permalink / raw) To: buildroot Hello, On Tue, 21 Mar 2017 14:23:56 +0100, Julien Beraud wrote: > pid_t is a signed 32bits integer on both 32bits and 64bits > architectures. > This fixes an issue with apache server which causes bad pid > to be written in PidFile > > Signed-off-by: Julien Beraud <julien.beraud@spectracom.orolia.com> > --- > package/apr/apr.mk | 1 + > 1 file changed, 1 insertion(+) I've applied to our master branch, thanks! Peter, I believe this is a good candidate for the LTS branch. However, a few comments: * It is strange that their configure script does: APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8) which means "assume size is 8 bytes" if cross-compiling when pid_t is always 4 bytes. * There are other sizeof that are probably bogus: APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8) APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8) APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8) Indeed on 32 bit systems, ssize_t, size_t are 4 bytes. off_t is an even more complicated beast: it's 8 bytes on 64 bits platform, but on 32 bits platform, it depends if large file support is enabled or not. See (executed on x86-64) : $ cat toto.c #include <unistd.h> #include <sys/types.h> #include <stdio.h> int main(void) { printf("pid_t = %ld\n", sizeof(pid_t)); printf("size_t = %ld\n", sizeof(size_t)); printf("ssize_t = %ld\n", sizeof(ssize_t)); printf("off_t = %ld\n", sizeof(off_t)); return 0; } $ gcc -o toto toto.c $ ./toto pid_t = 4 size_t = 8 ssize_t = 8 off_t = 8 $ gcc -m32 -o toto toto.c $ ./toto pid_t = 4 size_t = 4 ssize_t = 4 off_t = 4 $ gcc -m32 -D_FILE_OFFSET_BITS=64 -o toto toto.c $ ./toto pid_t = 4 size_t = 4 ssize_t = 4 off_t = 8 I really wonder why they are not using the regular AC_CHECK_SIZEOF() for those types. So I believe there's more stuff to fix in there. Best regards, Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] apr: fix size of pid_t 2017-03-21 22:04 ` Thomas Petazzoni @ 2017-03-22 10:51 ` Julien Béraud 2017-03-30 22:32 ` Peter Korsgaard 1 sibling, 0 replies; 4+ messages in thread From: Julien Béraud @ 2017-03-22 10:51 UTC (permalink / raw) To: buildroot Thanks Thomas, >Hello, > >On Tue, 21 Mar 2017 14:23:56 +0100, Julien Beraud wrote: >> pid_t is a signed 32bits integer on both 32bits and 64bits >> architectures. >> This fixes an issue with apache server which causes bad pid to be >> written in PidFile >> >> Signed-off-by: Julien Beraud <julien.beraud@spectracom.orolia.com> >> --- >> package/apr/apr.mk | 1 + >> 1 file changed, 1 insertion(+) > >I've applied to our master branch, thanks! Peter, I believe this is a good candidate for the LTS branch. > >However, a few comments: > > * It is strange that their configure script does: > > APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], pid_t, 8) > > which means "assume size is 8 bytes" if cross-compiling when pid_t > is always 4 bytes. > > * There are other sizeof that are probably bogus: > > APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], ssize_t, 8) > APR_CHECK_SIZEOF_EXTENDED([#include <stddef.h>], size_t, 8) > APR_CHECK_SIZEOF_EXTENDED([#include <sys/types.h>], off_t, 8) > > Indeed on 32 bit systems, ssize_t, size_t are 4 bytes. off_t is an > even more complicated beast: it's 8 bytes on 64 bits platform, but > on 32 bits platform, it depends if large file support is enabled or > not. > >See (executed on x86-64) : > >$ cat toto.c >#include <unistd.h> >#include <sys/types.h> >#include <stdio.h> > >int main(void) >{ > printf("pid_t = %ld\n", sizeof(pid_t)); > printf("size_t = %ld\n", sizeof(size_t)); > printf("ssize_t = %ld\n", sizeof(ssize_t)); > printf("off_t = %ld\n", sizeof(off_t)); > return 0; >} >$ gcc -o toto toto.c >$ ./toto >pid_t = 4 >size_t = 8 >ssize_t = 8 >off_t = 8 >$ gcc -m32 -o toto toto.c >$ ./toto >pid_t = 4 >size_t = 4 >ssize_t = 4 >off_t = 4 >$ gcc -m32 -D_FILE_OFFSET_BITS=64 -o toto toto.c $ ./toto pid_t = 4 size_t = 4 ssize_t = 4 off_t = 8 > >I really wonder why they are not using the regular AC_CHECK_SIZEOF() for those types. > >So I believe there's more stuff to fix in there. The pid_t type was causing a very easy to notice issue, but the other types sizes being wrong could as well be causing some issues. I will take a look at the other types sizes and add them in order to avoid any possible issue. I will also take a look at proposing patches to apr for those. Regards, Julien ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] apr: fix size of pid_t 2017-03-21 22:04 ` Thomas Petazzoni 2017-03-22 10:51 ` Julien Béraud @ 2017-03-30 22:32 ` Peter Korsgaard 1 sibling, 0 replies; 4+ messages in thread From: Peter Korsgaard @ 2017-03-30 22:32 UTC (permalink / raw) To: buildroot >>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes: > Hello, > On Tue, 21 Mar 2017 14:23:56 +0100, Julien Beraud wrote: >> pid_t is a signed 32bits integer on both 32bits and 64bits >> architectures. >> This fixes an issue with apache server which causes bad pid >> to be written in PidFile >> >> Signed-off-by: Julien Beraud <julien.beraud@spectracom.orolia.com> >> --- >> package/apr/apr.mk | 1 + >> 1 file changed, 1 insertion(+) > I've applied to our master branch, thanks! Peter, I believe this is a > good candidate for the LTS branch. Committed to 2017.02.x, thanks. -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-03-30 22:32 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-03-21 13:23 [Buildroot] [PATCH 1/1] apr: fix size of pid_t Julien Beraud 2017-03-21 22:04 ` Thomas Petazzoni 2017-03-22 10:51 ` Julien Béraud 2017-03-30 22:32 ` Peter Korsgaard
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.