Re: Re: PHP 3.0.16 tarball
| From: | Kirill Maximov | Date: | Fri, 07 Apr 2000 10:26:24 +0000 |
| Subject: | Re: Re: PHP 3.0.16 tarball | ||
| References: | 1 2 3 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-17696@lists.php.net to get a copy of this message | ||
Sascha Schumann wrote:
> On Mon, Apr 03, 2000 at 06:49:08PM +0400, Kirill Maximov wrote:
> >
> >
> > Sascha Schumann wrote:
> >
> > > Hi all,
> > >
> > > I've uploaded the first release candidate for PHP 3.0.16. We
> > > would appreciate it, if you could verify that it works in your
> > > environment. Please send us positive and negative feedback.
> > >
> > > http://va.php.net/~sas/php-3.0.16.tar.gz
> > >
> >
> > Please take a look to bug #3621. It contains a fix that works.
>
> I've also sent an email to the author of that code. Perhaps we
> need a Solaris 2.6 check at that place.
If seems to me that I made one further step solving the problem
with sysvsem.c . Indeed, the fix contained in 3.0.16 release
works fine with Solaris 7 x86, but results Bus error on
Sun Solaris 7. I suggest the same happens on other solaris
versions, including 2.6. From the man page for semctl on Solaris,
we see the following:
-------------------------------------------------------------
The semctl() function provides a variety of semaphore con-
trol operations as specified by cmd. The fourth argument is
optional, depending upon the operation requested. If
required, it is of type union semun, which must be expli-
citly declared by the application program.
union semun {
int val;
struct semid_ds *buf;
ushort_t *array;
} arg ;
-------------------------------------------------------------
There is already definition of this structure in semvsem.c:
#if !HAVE_SEMUN && defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ == 6
union semun {
int val; /* value for SETVAL */
struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
unsigned short int *array; /* array for GETALL, SETALL */
struct seminfo *__buf; /* buffer for IPC_INFO */
};
#undef HAVE_SEMUN
#define HAVE_SEMUN 1
#endif
So, I changed the line
#if !HAVE_SEMUN && defined(__GNU_LIBRARY__) && __GNU_LIBRARY__ == 6
with
#if !HAVE_SEMUN
and recompiled php with union semun defined - it compiled smoothly,
and worked on Solaris 7 [Sun|x86].
The same problem exists in PHP4 tree.
With best regards,
KIR
--
----- ----- ----- ----- ----- ----- ----- -----
Kirill Maximov maximov@astrive.com
Astrive, Inc. http://www.astrive.com