Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 591732 - portability broken by rpmsq.c check for PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
Summary: portability broken by rpmsq.c check for PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX...
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: rpm
Version: 12
Hardware: parisc11
OS: Other
low
medium
Target Milestone: ---
Assignee: Panu Matilainen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-12 22:20 UTC by Gary Quakenbush
Modified: 2010-08-13 11:11 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-08-13 11:11:02 UTC


Attachments (Terms of Use)

Description Gary Quakenbush 2010-05-12 22:20:42 UTC
Description of problem:
The rpmsq.c check for PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL appears to have no effect except to break portability.  The default mutex type appears to not matter here, because the mutex type is set in INIT_LOCK macro to PTHREAD_MUTEX_RECURSIVE.  In fact, checking for _NORMAL default type conflicts with always setting type to _RECURSIVE.

Note, please disregard Fedora release in this bug report; not sure which Fedora release contains rpm 4.8.0

One possible fix would be to remove lines 16-20 of rpmsq.c.  Or to fix this only for HP-UX builds, line 17 could be changed to:

#if !defined(__hpux) && PTHREAD_MUTEX_DEFAULT != PTHREAD_MUTEX_NORMAL


Version-Release number of selected component (if applicable):
rpm 4.8.0

How reproducible:
Compile in HP-UX 11iv2 environment

Steps to Reproduce:
1.
2.
3.
  
Actual results:
An HP-UX 11iv2 build of rpm 4.8.0 breaks with this msg:
rpmsq.c:18:4: error: #error RPM expects PTHREAD_MUTEX_DEFAULT == PTHREAD_MUTEX_NORMAL

Expected results:
No error during build.

Additional info:
Pertinent rpmsq.c code from rpm 4.8.0:
16  /* XXX suggested in bugzilla #159024 */
17  #if PTHREAD_MUTEX_DEFAULT != PTHREAD_MUTEX_NORMAL
18    #error RPM expects PTHREAD_MUTEX_DEFAULT == PTHREAD_MUTEX_NORMAL
19  #endif
20
21  #ifndef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
22  static pthread_mutex_t rpmsigTbl_lock = PTHREAD_MUTEX_INITIALIZER;
23  #else
24  static pthread_mutex_t rpmsigTbl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
25  #endif
26
27  #define DO_LOCK()       pthread_mutex_lock(&rpmsigTbl_lock);
28  #define DO_UNLOCK()     pthread_mutex_unlock(&rpmsigTbl_lock);
29  #define INIT_LOCK()     \
30      {   pthread_mutexattr_t attr; \
31          (void) pthread_mutexattr_init(&attr); \
32          (void) pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
33          (void) pthread_mutex_init (&rpmsigTbl_lock, &attr); \
34          (void) pthread_mutexattr_destroy(&attr); \
35          rpmsigTbl_sigchld->active = 0; \
36      }

Comment 1 Panu Matilainen 2010-08-13 11:11:02 UTC
Compilation issues on HP-UX are not Fedora bugs :)
Moved to upstream bug tracker: http://rpm.org/ticket/177, feel free to cc yourself there for further tracking of this.


Note You need to log in before you can comment on or make changes to this bug.