lkml.org 
[lkml]   [2006]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.6.17-rc3-mm1
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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-05-05 17:09    [W:0.225 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site