Yes the patch solved the problem. Thanks for the rapid response.

On Tue, 2011-06-28 at 20:59 +0200, Gilles Chanteperdrix wrote:
> On 06/28/2011 08:25 PM, Henry Bausley wrote:
> > 
> > Using the program below the used main heap continues to grow forever. 
> > 
> > int  main(void)
> > {
> >   sem_t *mutex;
> >   mutex = sem_open(SEM_NAME,O_CREAT,0644,1);
> >   sem_close(mutex);
> >   sem_unlink(SEM_NAME);
> >   return 0;
> > }
> > 
> > I am using xenomai 2.5.6 with the ipipe-2.6.35.9-powerpc-2.12-02
> > kernel.  Below you can see the used heap continually grow when
> > executing the above program.
> > 
> Should be fixed with the following patch:
> 
> diff --git a/ksrc/skins/posix/syscall.c b/ksrc/skins/posix/syscall.c
> index 3c7f7ee..c9e84a6 100644
> --- a/ksrc/skins/posix/syscall.c
> +++ b/ksrc/skins/posix/syscall.c
> @@ -718,17 +718,20 @@ static int __sem_close(struct pt_regs *regs)
>  
>       usm = assoc2usem(assoc);
>  
> -     if ((closed = (--usm->refcnt == 0)))
> +     err = sem_close(&sm.native_sem);
> +
> +     if (!err && (closed = (--usm->refcnt == 0)))
>               pse51_assoc_remove(&pse51_queues()->usems,
>                                  (u_long)sm.shadow_sem.sem);
>  
> -     err = sem_close(&sm.native_sem);
> -
>       xnlock_put_irqrestore(&pse51_assoc_lock, s);
>  
>       if (err)
>               return -thread_get_errno();
>  
> +     if (usm->refcnt == 0)
> +             xnfree(usm);
> +
>       return __xn_safe_copy_to_user((void __user *)__xn_reg_arg2(regs),
>                                     &closed, sizeof(int));
>  }
> 
> 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Outbound scan for Spam or Virus by Barracuda at Delta Tau
> > 
> > 
> > _______________________________________________
> > Xenomai-help mailing list
> > [email protected]
> > https://mail.gna.org/listinfo/xenomai-help
> > 
> 
> 




_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to