This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: multiprocessing build fails on Solaris 10
Type: compile error Stage:
Components: Build Versions: Python 2.6
process
Status: closed Resolution: duplicate
Dependencies: Superseder:
Assigned To: jnoller Nosy List: MrJean1, jnoller, pitrou, roudkerk
Priority: normal Keywords:

Created on 2008-06-20 01:38 by MrJean1, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (3)
msg68438 - (view) Author: Jean Brouwers (MrJean1) Date: 2008-06-20 01:38
The multiprocessing module fails to build on Solaris 10 when using the 
Sun C compiler.  The failure is due to one missing symbol  
SEM_VALUE_MAX.

Defining that symbol (e.g. as _POSIX_SEM_VALUE_MAX) builds the 
_multiprocessing module for both 32- and 64-bit.

However, for 32-bit, 5 tests from test_multiprocessing fail due to the 
missing _ctypes module.  For 64-bit, the first 3 tests fail (like for 
32-bit) but the 4th test hangs.  Here is a log:

./python Lib/test/test_multiprocessing.py
test_array (__main__.WithProcessesTestArray) ... ERROR
test_getobj_getlock_obj (__main__.WithProcessesTestArray) ... ERROR
test_rawarray (__main__.WithProcessesTestArray) ... ERROR
test_notify (__main__.WithProcessesTestCondition) ... Process Process-1:
Traceback (most recent call last):
  File "/..../64/Python-2.6b1/Lib/multiprocessing/process.py", line 237, 
in _bootstrap
    self.run()
  File "/.../64/Python-2.6b1/Lib/multiprocessing/process.py", line 93, 
in run
    self._target(*self._args, **self._kwargs)
  File "Lib/test/test_multiprocessing.py", line 610, in f
    sleeping.release()
ValueError: semaphore or lock released too many times


This is Solaris 10 on an Ultra20 (Opteron) machine:

> uname -a
SunOS unknown 5.10 Generic_118855-14 i86pc i386 i86pc

> cc -v
cc: Sun C 5.8 2005/10/13
msg68465 - (view) Author: Jean Brouwers (MrJean1) Date: 2008-06-20 15:34
One more comment on SEM_VALUE_MAX for Solaris.  _POSIX_SEM_VALUE_MAX is 
defined in <limits.h> on Solaris and that header file must be included.  
Better might be to use _SEM_VALUE_MAX which is defined in <param.h> and 
that header files needs to be included as well.  Rerhaps, INT_MAX is 
best.

/usr/include/limits.h:#define   _POSIX_SEM_NSEMS_MAX      256
/usr/include/limits.h:#define   _POSIX_SEM_VALUE_MAX    32767

/usr/include/sys/param.h:#define        _SEM_NSEMS_MAX          INT_MAX
/usr/include/sys/param.h:#define        _SEM_VALUE_MAX          INT_MAX


Btw, the value of _POSIX_SEM_MAX_VALUE is 32767.
msg71984 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2008-08-26 16:11
This is a duplicate of #3110.
History
Date User Action Args
2022-04-11 14:56:35adminsetgithub: 47399
2008-08-26 16:11:55pitrousetstatus: open -> closed
resolution: duplicate
messages: + msg71984
nosy: + pitrou
2008-06-20 15:34:32MrJean1setmessages: + msg68465
2008-06-20 02:04:50jnollersetnosy: + roudkerk
2008-06-20 02:01:23jnollersetassignee: jnoller
nosy: + jnoller
2008-06-20 01:38:32MrJean1create