On Monday 20 February 2012 3:09:08 pm Ted Unangst wrote:
> On Mon, Feb 20, 2012, Kurt Miller wrote:
> > On Sunday 19 February 2012 4:33:35 pm Amit Kulkarni wrote:
>
> >> There is some problem building sun's jdk 1.6 (devel/jdk/1.6) and
> >> lang/mono. Note this is with stock current (src,xenocara,ports) as of
> >> friday feb 17... CC'ing kurt@ and robert@. Can somebody look in there
> >> if they have time?
>
> What is the problem?
guenther@ mentioned to me that pthread_suspend_np() suspends the whole process not just the specified thread. Is that not the case?
>
> > Thanks for the report. rthreads doesn't have functional
> > pthread_suspend_np() support yet, so ports using it will not work. That
> > covers most garbage collection based applications like the jdk and mono.
> > When pthread_suspend_np() is functional we can try these applications again.
>
> If the problem is just that the main thread can't be suspended, that's
> been fixed for ages I think. We just need to fix the library.
>
> Index: rthread_sched.c
> ===================================================================
> RCS file: /home/tedu/cvs/src/lib/librthread/rthread_sched.c,v
> retrieving revision 1.10
> diff -u -p -r1.10 rthread_sched.c
> --- rthread_sched.c 19 Feb 2012 02:07:48 -0000 1.10
> +++ rthread_sched.c 20 Feb 2012 20:06:15 -0000
> @@ -136,13 +136,8 @@ pthread_suspend_np(pthread_t thread)
>
> if (thread == pthread_self())
> return (EDEADLK);
> - /*
> - * XXX Avoid a bug in current signal handling by refusing to
> - * suspend the main thread.
> - */
> - if (thread != &_initial_thread)
> - if (kill(thread->tid, SIGSTOP) == -1)
> - errn = errno;
> + if (kill(thread->tid, SIGSTOP) == -1)
> + errn = errno;
> return (errn);
> }
>
>
>