[M3devel] Fwd: Re: Status of threads for RC4?

Jay K jay.krell at cornell.edu
Wed Oct 21 23:07:09 CEST 2009


Not sure how the formatting will come through..but yes.

Hopefully on all processor architectures.

 

 

"np" means "not portable", ok

 

 

http://www.openbsd.org/cgi-bin/man.cgi

 

appropos suspend

 

http://www.openbsd.org/cgi-bin/man.cgi?query=pthread_resume_all_np&sektion=3&apropos=0&manpath=OpenBSD+Current&arch=i386

 


PTHREAD_SUSPEND_NP(3)     OpenBSD Programmer's Manual    PTHREAD_SUSPEND_NP(3)

NAME
     pthread_suspend_np, pthread_suspend_all_np, pthread_resume_np,
     pthread_resume_all_np - suspend and resume thread(s)

SYNOPSIS
     #include <pthread.h>
     #include <pthread_np.h>

     int
     pthread_suspend_np(pthread_t thread);

     void
     pthread_suspend_all_np(void);

     int
     pthread_resume_np(pthread_t thread);

     void
     pthread_resume_all_np(void);

DESCRIPTION
     The pthread_suspend_np() function interrupts the given thread and places
     it in a suspended state.

     The pthread_suspend_all_np() function interrupts all threads except the
     current thread and places them in a suspended state.

     The pthread_resume_np() function resumes a thread suspended with
     pthread_suspend_np() or pthread_suspend_all_np().

     The pthread_resume_all_np() function resumes all threads suspended with
     pthread_suspend_np() or pthread_suspend_all_np().

     The pthread_resume_np() and pthread_resume_all_np() functions have no ef-
     fect on threads that have not been suspended.

     Suspending and resuming a thread has an effect similar to that of receiv-
     ing a signal, namely that resumed system calls will return an error value
     of EINTR.

RETURN VALUES
     The pthread_suspend_np() and pthread_resume_np() functions fail if:

     [ESRCH]       No thread could be found corresponding to that specified by
                   the given thread ID.

     The pthread_suspend_np() function fails if:

     [EDEADLK]     Attempt to suspend the current thread.

SEE ALSO
     pthread_cancel(3), pthreads(3)

STANDARDS
     The pthread_suspend_np(), pthread_suspend_all_np(), pthread_resume_np()
     and pthread_resume_all_np() functions are non-portable and may not be
     supported with the above semantics on other POSIX systems.

OpenBSD 4.5                      May 31, 2007                                1



NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | STANDARDS 

 

 - Jay

 


From: jay.krell at cornell.edu
To: wagner at elegosoft.com
Date: Wed, 21 Oct 2009 13:02:26 -0700
CC: m3devel at elegosoft.com
Subject: Re: [M3devel] Fwd: Re: Status of threads for RC4?


OpenBSD has good documentation.. (man pages)

 - Jay (phone)

On Oct 21, 2009, at 11:05 AM, Olaf Wagner <wagner at elegosoft.com> wrote:




Stefan,

you are our OpenBSD fan, aren't you? Can you answer this?

Olaf

----- Forwarded message from hosking at cs.purdue.edu -----
   Date: Wed, 21 Oct 2009 12:06:12 -0400
   From: Tony Hosking <hosking at cs.purdue.edu>
Reply-To: Tony Hosking <hosking at cs.purdue.edu>
Subject: Re: [M3devel] Status of threads for RC4?
     To: Olaf Wagner <wagner at elegosoft.com>
     Cc: Jay K <jay.krell at cornell.edu>, m3devel <m3devel at elegosoft.com>

This is a known problem for the user-level pthreads on OpenBSD.

Quick question: does OpenBSD support pthread_suspend, pthread_resume?
If so then we could work avoid the signals entirely (as we do on OS
X).  All that is needed is implementation of RTMachine.SuspendThread,
RTMachine.ResumeThread and RTMachine.GetState for OpenBSD targets.

On 21 Oct 2009, at 10:04, Olaf Wagner wrote:


Quoting Tony Hosking <hosking at cs.purdue.edu>:




Yes, a C test can tell us if threads waiting on mutexes are able to


receive pthread_kill signals.



Could you add such a simple test program somewhere in m3tests or

m3core/tests? We could also use that for a bug report to the

OpenBSD developers (they won't like to install m3 to reproduce

the error).



Olaf




On 21 Oct 2009, at 03:21, Olaf Wagner wrote:






Quoting Jay K <jay.krell at cornell.edu>:








Is it reasonable maybe to rewrite this test in C and see if it  hangs?









ie. see if maybe it is an OpenBSD bug?







It doesn't hang with garbage collection turned off, so there must be



some unhealthy interaction between that and the thread  implementation.



I don't think you will be able to narrow it down with a C test.







Olaf



-- 



Olaf Wagner -- elego Software Solutions GmbH



           Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,   Germany



phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30  23   45 86 95



http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:   Berlin



Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:    DE163214194











-- 

Olaf Wagner -- elego Software Solutions GmbH

             Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  Germany

phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23  45 86 95

 http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:  Berlin

Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:  DE163214194





----- End forwarded message -----


-- 
Olaf Wagner -- elego Software Solutions GmbH
              Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
  http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194







This is a known problem for the user-level pthreads on OpenBSD.


Quick question: does OpenBSD support pthread_suspend, pthread_resume?  If so then we could work avoid the signals entirely (as we do on OS X).  All that is needed is implementation of RTMachine.SuspendThread, RTMachine.ResumeThread and RTMachine.GetState for OpenBSD targets.


On 21 Oct 2009, at 10:04, Olaf Wagner wrote:

Quoting Tony Hosking <hosking at cs.purdue.edu>:


Yes, a C test can tell us if threads waiting on mutexes are able to

receive pthread_kill signals.

Could you add such a simple test program somewhere in m3tests or
m3core/tests? We could also use that for a bug report to the
OpenBSD developers (they won't like to install m3 to reproduce
the error).

Olaf


On 21 Oct 2009, at 03:21, Olaf Wagner wrote:




Quoting Jay K <jay.krell at cornell.edu>:






Is it reasonable maybe to rewrite this test in C and see if it hangs?







ie. see if maybe it is an OpenBSD bug?





It doesn't hang with garbage collection turned off, so there must be


some unhealthy interaction between that and the thread implementation.


I don't think you will be able to narrow it down with a C test.





Olaf


-- 


Olaf Wagner -- elego Software Solutions GmbH


            Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  Germany


phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23   45 86 95


http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:  Berlin


Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:   DE163214194






-- 
Olaf Wagner -- elego Software Solutions GmbH
              Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
  http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194


 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20091021/9bd21e30/attachment-0002.html>


More information about the M3devel mailing list