Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Mar 2000 14:16:17 +0000
From:      mirko.viviani@rccr.cremona.it
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   gnu/17433: libobjc locks mutex before deallocating it
Message-ID:  <200003171316.OAA05556@rccr1.rccr.cremona.it>

next in thread | raw e-mail | index | archive | help

>Number:         17433
>Category:       gnu
>Synopsis:       libobjc locks mutex before deallocating it
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Mar 17 05:20:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Mirko Viviani
>Release:        FreeBSD 3.4-STABLE i386
>Organization:
>Environment:



>Description:

In the 4.0-RELEASE (and lower) libobjc there is a but in the posix thread
implementation. It locks the mutex before deallocating it.

Anyway in 4.0 is libobjc compiled with thr-posix.c ? I haven't tested 4.0 yet,
but I hope yes.


>How-To-Repeat:

Run any of the GNUstep application that uses threads linked with libobjc
compiled with thr-posix support.


>Fix:

src/contrib/gcc/objc/thr.c - objc_mutex_deallocate() should be changed to:

int
objc_mutex_deallocate(objc_mutex_t mutex)
{
  int depth;

  /* Valid mutex? */
  if (!mutex)
    return -1;

#if 0
  /* Acquire lock on mutex */
  depth = objc_mutex_lock(mutex);
#endif
  depth = 1;

  /* Call backend to destroy mutex */
  if (__objc_mutex_deallocate(mutex))
    return -1;

  /* Free the mutex structure */
  objc_free(mutex);

  /* Return last depth */
  return depth;
}




>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003171316.OAA05556>