On Wed, May 03, 2006 at 04:43:18PM +0200, Benoit Boissinot wrote:
> On Wed, May 03, 2006 at 04:15:32PM +0200, Thomas Gleixner wrote:
> > On Wed, 2006-05-03 at 06:48 -0700, Andrew Morton wrote:
> > > > Since a few -mm releases I am seeing processes stuck in a
> > > > nanosleep({0, 0}, NULL) syscall. Sometimes, they unfreeze after
> > > > several hours.
> > >
> > > Thanks. Yes, please test mainline first - it will probably occur there.
> > >
> > > And it's a nanosleep(zero) all the time? The obvious answer would be that
> > > a clock tick came in at the right time and we end up trying to sleep for -1
> > > units. But if that was the case, things wouldn't unsleep after just
> > > several hours.
> >
> > I don't see how that should happen. The expiry time is stored in
> > absolute time format when nanosleep is started and compared against
> > current time in the softirq. We might miss one tick, but not more.
> >
> > Benoit, can you please mail me .config and a boot log ?
>
> they are attached (the faulting process is urxvtd).
>
I added the following debug code:
Index: linux/kernel/hrtimer.c
===================================================================
--- linux.orig/kernel/hrtimer.c
+++ linux/kernel/hrtimer.c
@@ -426,6 +426,7 @@ hrtimer_start(struct hrtimer *timer, kti
struct hrtimer_base *base, *new_base;
unsigned long flags;
int ret;
+ ktime_t save = tim;
base = lock_hrtimer_base(timer, &flags);
@@ -437,6 +438,12 @@ hrtimer_start(struct hrtimer *timer, kti
if (mode == HRTIMER_REL) {
tim = ktime_add(tim, new_base->get_time());
+ if(save.tv64 == 0) {
+ char comm[TASK_COMM_LEN];
+ ktime_t curr = new_base->get_time();
+ get_task_comm(comm, current);
+ printk("%s: empty nanosleep %lld %lld\n", comm, curr.tv64, tim.tv64);
+ }
/*
* CONFIG_TIME_LOW_RES is a temporary way for architectures
* to signal that they simply return xtime in
and when urxvtd hanged I had the following in dmesg:
[ 356.696000] urxvtd: empty nanosleep 356726124322 17948911854451
So I suppose something is wrong in ktime_add()
regards,
Benoit
--
powered by bash/screen/(urxvt/fvwm|linux-console)/gentoo/gnu/linux OS
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]