Re: [PHP-DEV] Re: [PHP-BETA] PHP 3.0.16 tarball From: Kirill Maximov (kir <email protected>)
Date: 04/07/00

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 <email protected>
Astrive, Inc.                   http://www.astrive.com

-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>