All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Chris Friesen" <cfriesen@nortel.com>
To: "Chris Friesen" <cfriesen@nortel.com>
Cc: linuxppc-dev@ozlabs.org, tglx@linutronix.de,
	linux-kernel@vger.kernel.org
Subject: Re: BUG? timer_create() with SIGEV_THREAD not working (at least on ppc64)
Date: Tue, 18 Nov 2008 14:33:57 -0600	[thread overview]
Message-ID: <492326B5.10203@nortel.com> (raw)
In-Reply-To: <4922E9EC.3070606@nortel.com>

Chris Friesen wrote:
> The code below sets up a simple timer with SIGEV_THREAD.  I compiled the 
> code as "g++ timertest.cc -o timertest -lrt -pthread".
> 
> Running it on my G5 with 2.6.27 (but with an older glibc), it prints:
> 
> Creating timer
> Setting timer 268509264 for 5-second expiration...
> 
> and then the timer never expires.  I have an old Fedora Core 4 x86 
> machine and there it works as expected.
> 
> Is there some hard requirement to upgrade glibc?  If not, then this 
> looks like a bug somewhere.

I'm getting suspicious of either glibc or my version of strace, as it 
shows the child thread calling rt_sigtimedwait() with an empty signal set.

clone(Process 2663 attached
child_stack=0xf7ffe6c0, 
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID|CLONE_DETACHED, 
parent_tidptr=0xf7ffeb68, tls=0xf8005f80, child_tidptr=0xf7ffeb68) = 2663
[pid  2662] futex(0xf5f11a4, FUTEX_WAKE, 2147483647) = 0
[pid  2662] timer_create(0, {0x10011050, 32, SIGEV_THREAD_ID, {2663}}, 
{(nil)}) = 0
[pid  2662] timer_settime(0, , {it_interval={1, 0}, it_value={1, 0}}, 
<unfinished ...>
[pid  2663] rt_sigprocmask(SIG_BLOCK, [RTMIN],  <unfinished ...>
[pid  2662] <... timer_settime resumed> NULL) = 0
[pid  2662] fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), 
...}) = 0
[pid  2663] <... rt_sigprocmask resumed> NULL, 8) = 0
[pid  2662] mmap(NULL, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid  2663] rt_sigtimedwait([],  <unfinished ...>
[pid  2662] <... mmap resumed> )        = 0xf7ffa000
[pid  2662] write(1, "set timer OK\n", 13set timer OK


Chris

WARNING: multiple messages have this Message-ID (diff)
From: "Chris Friesen" <cfriesen@nortel.com>
To: "Chris Friesen" <cfriesen@nortel.com>
Cc: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de
Subject: Re: BUG? timer_create() with SIGEV_THREAD not working (at least on ppc64)
Date: Tue, 18 Nov 2008 14:33:57 -0600	[thread overview]
Message-ID: <492326B5.10203@nortel.com> (raw)
In-Reply-To: <4922E9EC.3070606@nortel.com>

Chris Friesen wrote:
> The code below sets up a simple timer with SIGEV_THREAD.  I compiled the 
> code as "g++ timertest.cc -o timertest -lrt -pthread".
> 
> Running it on my G5 with 2.6.27 (but with an older glibc), it prints:
> 
> Creating timer
> Setting timer 268509264 for 5-second expiration...
> 
> and then the timer never expires.  I have an old Fedora Core 4 x86 
> machine and there it works as expected.
> 
> Is there some hard requirement to upgrade glibc?  If not, then this 
> looks like a bug somewhere.

I'm getting suspicious of either glibc or my version of strace, as it 
shows the child thread calling rt_sigtimedwait() with an empty signal set.

clone(Process 2663 attached
child_stack=0xf7ffe6c0, 
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID|CLONE_DETACHED, 
parent_tidptr=0xf7ffeb68, tls=0xf8005f80, child_tidptr=0xf7ffeb68) = 2663
[pid  2662] futex(0xf5f11a4, FUTEX_WAKE, 2147483647) = 0
[pid  2662] timer_create(0, {0x10011050, 32, SIGEV_THREAD_ID, {2663}}, 
{(nil)}) = 0
[pid  2662] timer_settime(0, , {it_interval={1, 0}, it_value={1, 0}}, 
<unfinished ...>
[pid  2663] rt_sigprocmask(SIG_BLOCK, [RTMIN],  <unfinished ...>
[pid  2662] <... timer_settime resumed> NULL) = 0
[pid  2662] fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), 
...}) = 0
[pid  2663] <... rt_sigprocmask resumed> NULL, 8) = 0
[pid  2662] mmap(NULL, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...>
[pid  2663] rt_sigtimedwait([],  <unfinished ...>
[pid  2662] <... mmap resumed> )        = 0xf7ffa000
[pid  2662] write(1, "set timer OK\n", 13set timer OK


Chris

  reply	other threads:[~2008-11-18 20:34 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-18 16:14 BUG? timer_create() with SIGEV_THREAD not working (at least on ppc64) Chris Friesen
2008-11-18 16:14 ` Chris Friesen
2008-11-18 20:33 ` Chris Friesen [this message]
2008-11-18 20:33   ` Chris Friesen
2008-11-18 23:06   ` Chris Friesen
2008-11-18 23:06     ` Chris Friesen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=492326B5.10203@nortel.com \
    --to=cfriesen@nortel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.