ID: 15983
Comment by: pratesi@telug.it
Reported By: sl@scrooge.dk
Status: Feedback
Bug Type: Session related
Operating System: Debian/Linux mips platform
PHP Version: 4.1.2 and 4.2.0
New Comment:
I have found some messages that could reply to our issue;
the second is a reply written by Linus Torvalds:
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0486.html
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0493.html
In practice, for what I'm able to understand of these messages,
it seems that, on non-i386 platforms, glibc and the linux kernel
could "disagree" about the implementation of pread() and then
that the use of pread() on linux + glibc can fail on non-i386
platforms.
Some other messages about this topic:
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0411.html
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0439.html
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0469.html
And finally:
http://www.cs.helsinki.fi/linux/linux-kernel/2002-30/0559.html
where it is written that it is a glibc bug, fixed in the CVS.
I suppose that future Linux distributions will not be affected
by this problem, but, IMVVVHO, for safety reasons, currently
the use of pread() should be avoided on non-i386 Linux platforms,
and this should solve this issue.
Previous Comments:
------------------------------------------------------------------------
[2002-08-30 14:45:07] pratesi@telug.it
Debian Woody 3.0r0 PPC, PHP 4.2.2
---------------------------------
bash$ find . -name php_config.h
./debian/php4-dev/usr/include/php4/main/php_config.h
./apache-build/main/php_config.h
./cgi-build/main/php_config.h
In all these 3 files, HAVE_PREAD is defined and set to 1:
/* Define if you have the pread function. */
#define HAVE_PREAD 1
BTW, I could try to compile PHP 4.1 or 4.2 on a Linux PPC
box based on glibc 2.1 and check if the same problem
occurs also with glibc 2.1.
Could this check be useful?
------------------------------------------------------------------------
[2002-08-30 12:14:18] kalowsky@php.net
Can any of you check your php_config.h file and see if the HAVE_PREAD
variable is defined?
------------------------------------------------------------------------
[2002-08-30 10:06:12] sl@scrooge.dk
I will try to make some test this weekend om the MIPS platform.
------------------------------------------------------------------------
[2002-08-30 06:54:12] pratesi@telug.it
I can make all tests that you want as I'm the sys admin
of the computers at hand.
But if tests affect the use of apache and php, a bit of
patience is needed, as the computer currently using
that workaround is a production server, hence I need
to install and set up an unsed computer of the rack.
An analogous consideration holds true for the Sparc
I'm using :-)
If you prefer, we can continue with private mailing.
Which tests should I perform on the pread() ?
Should I open a bug report for glibc 2.2 ?
Thank you for your time.
------------------------------------------------------------------------
[2002-08-29 16:30:17] kalowsky@php.net
The problem with the suggested work around is fairly straight forward.
from the ext/session/config.m4:
if test "$PHP_SESSION" != "no"; then
AC_CHECK_FUNCS(pread pwrite)
This asks libtool/autoconf to check the system for the functions pread
and pwrite. If they are found by libtool/autoconf (mostly autoconf),
the HAVE_PREAD and HAVE_PWRITE flags are set. If your work around is
actually working, it would suggest to me that pread doesn't work
properly on this non-i386 machines.
Is there any chance you can look into the pread/pwrite functionality of
these non-i386 machines?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/15983
--
Edit this bug report at http://bugs.php.net/?id=15983&edit=1