SIGINFO and pthreads

Maxim Konovalov maxim at macomnet.ru
Thu Jun 8 21:30:06 UTC 2006


On Thu, 8 Jun 2006, 12:18-0400, Mikhail Teterin wrote:

> четвер 08 червень 2006 00:17, Maxim Konovalov написав:
> > Inline it if it's small.  Mailman strips most attachments.
>
> Damn... Yes, it is small -- this is just a demo program. Compile it first as
>
> 	cc -o t t.c
>
> Then -- run and try various keyboard signals like Ctrl-C, Ctrl-Z,
> Ctrl-T (SIGINFO), or Ctrl-\. (It will not quit on its own, you'll
> have to kill it from another prompt.)
>
> They will all work. Then -- recompile as
>
> 	cc -o t -pthread t.c
>
> And run... This time around it will ignore the Ctrl-T, while
> continuing to respond to others.
>
> > libpthread uses SIGINFO for dumping thread information to a file but
> > looking over the code it seems it does allow to use SIGINFO to the
> > app.
>
> I'd like to be able to disable the debugging feature or, at least,
> force it to call my signal-handler AS EXPECTED AND DOCUMENTED, after
> it is done with its own dumping.

A funny thing your test program does work if you run it as

LIBPTHREAD_DEBUG=yes ./t

Try this patch:

Index: thread/thr_sigaction.c
===================================================================
RCS file: /home/ncvs/src/lib/libpthread/thread/thr_sigaction.c,v
retrieving revision 1.23
diff -u -p -r1.23 thr_sigaction.c
--- thread/thr_sigaction.c	13 Mar 2006 00:59:51 -0000	1.23
+++ thread/thr_sigaction.c	8 Jun 2006 17:30:31 -0000
@@ -75,7 +75,7 @@ _sigaction(int sig, const struct sigacti
 		 * Check if the kernel needs to be advised of a change
 		 * in signal action:
 		 */
-		if (act != NULL && sig != SIGINFO) {
+		if (act != NULL /* && sig != SIGINFO */) {

 			newact.sa_flags |= SA_SIGINFO;

%%%

For the first glance and quick test this check is not needed as we
dump threads in already installed for SIGINFO _thr_sig_handler().  Of
course we need our libpthreads experts review.

-- 
Maxim Konovalov


More information about the freebsd-threads mailing list