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
Type: ---
Embargoed:


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.