RPM

rpmsq portability issues with pthread mutex type assumptions

Bug #637219 reported by Jeff Johnson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
RPM
Fix Released
Low
Jeff Johnson
CentOS
Fix Released
Unknown
Fedora
Won't Fix
Medium

Bug Description

tracker

Revision history for this message
In , Gary (gary-redhat-bugs) wrote :

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 }

Revision history for this message
In , Panu (panu-redhat-bugs) wrote :

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.

Jeff Johnson (n3npq)
tags: added: portability rpm.org
Changed in centos:
status: Unknown → New
Revision history for this message
Jeff Johnson (n3npq) wrote :

AFAIK, the mutex initializer was fixed years ago.

Changed in rpm:
status: New → Fix Released
importance: Undecided → Low
assignee: nobody → Jeff Johnson (n3npq)
milestone: none → 5.1.10
Changed in centos:
status: New → Fix Released
Changed in fedora:
importance: Unknown → Medium
status: Unknown → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.