To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.rcx.legosOpen lugnet.robotics.rcx.legos in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / RCX / legOS / 2821
2820  |  2822
Subject: 
Semaphore(s) locked when task killed.
Newsgroups: 
lugnet.robotics.rcx.legos
Date: 
Wed, 4 Sep 2002 02:28:19 GMT
Viewed: 
2180 times
  
I have found that killing a task which is sending data via lnp will cause
lnp to stop functioning.  Turning the brick off then on again will get lnp
working again.  The issue is with the semaphore(s) used in the kernel tasks.

Currently there is no mechanism to track what semaphores are locked by a
task.  When killall is used to end a task (which is commonly done) the task
will terminate prior to releasing the semaphores it has locked.

So, the question is, what is a good solution to this problem?

I tried a quick patch for the specific issue I encountered... where
program.c waits for the semaphore to be released before calling killall
(handling the run/stop button).  However, this is a poor solution since the
task in question may have entered an infinite loop or encountered other such
problems.

I am working on a patch that tracks the semaphores locked by a task.  kill
and killall can then release the semaphores while killing the task.
However, there may be a better solution.

// Joe



Message has 4 Replies:
  Re: Semaphore(s) locked when task killed.
 
(...) hmmm I wonder what other unix like OSs do in this situation? automatically unlocking doesn't seem particuarlly clean, what is to say that it is safe to unlock the mutexes just because the locking thread has been killed? Perhaps we can (...) (22 years ago, 4-Sep-02, to lugnet.robotics.rcx.legos)
  Re: Semaphore(s) locked when task killed.
 
(...) This explains a problem I've been having. I've noticed this exact issue, but I wasn't sure if I was doing something wrong, or exactly what the problem was. I have a program that sends IR messages (for proximity) and after the program is (...) (22 years ago, 4-Sep-02, to lugnet.robotics.rcx.legos)
  Re: Semaphore(s) locked when task killed.
 
Have you considered implementing thread cleanup handlers? Similar to what pthread_cleanup_push and pthread_cleanup_pop provide. "Joseph Woolley" <jwoolley@spamblock....ht.rr.com> wrote in message news:H1w6v9.8M0@lugnet.com... (...) tasks. (...) task (...) (22 years ago, 4-Sep-02, to lugnet.robotics.rcx.legos)
  Re: Semaphore(s) locked when task killed.
 
I have completed an update to solve some of the problems mentioned previously. If all goes well, I will be able to start updating the files on sourceforge within a week. More soon. // Joe (22 years ago, 9-Sep-02, to lugnet.robotics.rcx.legos)

7 Messages in This Thread:




Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR