* [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) @ 2008-02-29 16:54 Anders Blomdell 2008-02-29 17:58 ` Gilles Chanteperdrix 0 siblings, 1 reply; 13+ messages in thread From: Anders Blomdell @ 2008-02-29 16:54 UTC (permalink / raw) To: xenomai-help Hi, with xenomai 2.4.1 my call to: rt_cond_wait(&cond, &mutex, 1000); doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be due to CONFIG_NO_HZ=y, or have I misunderstood something? Regards Anders Blomdell -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-02-29 16:54 [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) Anders Blomdell @ 2008-02-29 17:58 ` Gilles Chanteperdrix 2008-03-03 10:30 ` Anders Blomdell 0 siblings, 1 reply; 13+ messages in thread From: Gilles Chanteperdrix @ 2008-02-29 17:58 UTC (permalink / raw) To: Anders Blomdell; +Cc: xenomai-help On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell <anders.blomdell@domain.hid> wrote: > Hi, > > with xenomai 2.4.1 my call to: > > rt_cond_wait(&cond, &mutex, 1000); > > doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be > due to CONFIG_NO_HZ=y, or have I misunderstood something? What is your system timer setting ? Are you running in periodic or aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, so rt_cond_wait should return instantaneously. -- Gilles Chanteperdrix ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-02-29 17:58 ` Gilles Chanteperdrix @ 2008-03-03 10:30 ` Anders Blomdell 2008-03-03 11:00 ` Philippe Gerum 0 siblings, 1 reply; 13+ messages in thread From: Anders Blomdell @ 2008-03-03 10:30 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-help Gilles Chanteperdrix wrote: > On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell > <anders.blomdell@domain.hid> wrote: >> Hi, >> >> with xenomai 2.4.1 my call to: >> >> rt_cond_wait(&cond, &mutex, 1000); >> >> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >> due to CONFIG_NO_HZ=y, or have I misunderstood something? > > What is your system timer setting ? Are you running in periodic or > aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, > so rt_cond_wait should return instantaneously. OK, here comes a simplified program that just outputs A, and then hangs. #include <sys/mman.h> #include <native/cond.h> #include <native/mutex.h> #include <native/task.h> #include <native/timer.h> int main(int argc, char *argv[]) { RT_MUTEX mutex; RT_COND cond; RT_TASK task_main; mlockall(MCL_CURRENT|MCL_FUTURE); rt_task_shadow(&task_main, "main", 1, T_FPU); if (rt_mutex_create(&mutex, NULL)) { fprintf(stderr, "Failed to create mutex\n"); exit(1); } if (rt_cond_create (&cond, NULL)) { fprintf(stderr, "Failed to create condition\n"); exit(1); } if (rt_timer_set_mode(TM_ONESHOT)) { fprintf(stderr, "Failed to set timer mode\n"); exit(1); } rt_mutex_acquire(&mutex, TM_INFINITE); printf("A\n"); rt_cond_wait(&cond, &mutex, 1000); printf("B\n"); rt_mutex_release(&mutex); exit(0); } Probaly something extremely simple I have overlooked (SIGH). Regards Anders -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 10:30 ` Anders Blomdell @ 2008-03-03 11:00 ` Philippe Gerum 2008-03-03 11:08 ` Anders Blomdell 0 siblings, 1 reply; 13+ messages in thread From: Philippe Gerum @ 2008-03-03 11:00 UTC (permalink / raw) To: Anders Blomdell; +Cc: xenomai-help Anders Blomdell wrote: > Gilles Chanteperdrix wrote: >> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >> <anders.blomdell@domain.hid> wrote: >>> Hi, >>> >>> with xenomai 2.4.1 my call to: >>> >>> rt_cond_wait(&cond, &mutex, 1000); >>> >>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >> What is your system timer setting ? Are you running in periodic or >> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >> so rt_cond_wait should return instantaneously. > OK, here comes a simplified program that just outputs A, and then hangs. > I can't reproduce this issue with your test code here, but this might be the sign of some timer race depending on how fast is the hw. By hanging, I assume the box is still ok, right? If so, could you please send the output of /proc/xenomai/stat, /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? TIA, -- Philippe. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:00 ` Philippe Gerum @ 2008-03-03 11:08 ` Anders Blomdell 2008-03-03 11:22 ` Philippe Gerum 0 siblings, 1 reply; 13+ messages in thread From: Anders Blomdell @ 2008-03-03 11:08 UTC (permalink / raw) To: philippe.gerum; +Cc: xenomai-help Philippe Gerum wrote: > Anders Blomdell wrote: >> Gilles Chanteperdrix wrote: >>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>> <anders.blomdell@domain.hid> wrote: >>>> Hi, >>>> >>>> with xenomai 2.4.1 my call to: >>>> >>>> rt_cond_wait(&cond, &mutex, 1000); >>>> >>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>> What is your system timer setting ? Are you running in periodic or >>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>> so rt_cond_wait should return instantaneously. >> OK, here comes a simplified program that just outputs A, and then hangs. >> > > I can't reproduce this issue with your test code here, but this might be > the sign of some timer race depending on how fast is the hw. > > By hanging, I assume the box is still ok, right? > If so, could you please send the output of /proc/xenomai/stat, > /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? > > TIA, > > cat /proc/xenomai/stat CPU PID MSW CSW PF STAT %CPU NAME 0 0 0 108606586 0 00500080 100.0 ROOT/0 0 0 0 54113426 0 00000082 0.0 rtnet-stack 0 0 0 1 0 00000082 0.0 rtnet-rtpc 0 22291 2 3 0 00300186 0.0 main 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] > cat /proc/xenomai/sched CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME 0 0 -1 0 0 master R ROOT/0 0 0 98 0 0 master W rtnet-stack 0 0 0 0 0 master W rtnet-rtpc 0 22291 1 0 0 master w main > cat /proc/xenomai/timer status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc > cat /proc/xenomai/timerstat/master CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME 0 1049107334 506070537 324149 - NULL [host-timer/0] 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] 0 1 1 - - xnthread_ti main -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:08 ` Anders Blomdell @ 2008-03-03 11:22 ` Philippe Gerum 2008-03-03 11:26 ` Anders Blomdell 2008-03-03 12:12 ` Anders Blomdell 0 siblings, 2 replies; 13+ messages in thread From: Philippe Gerum @ 2008-03-03 11:22 UTC (permalink / raw) To: Anders Blomdell; +Cc: xenomai-help Anders Blomdell wrote: > Philippe Gerum wrote: >> Anders Blomdell wrote: >>> Gilles Chanteperdrix wrote: >>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>>> <anders.blomdell@domain.hid> wrote: >>>>> Hi, >>>>> >>>>> with xenomai 2.4.1 my call to: >>>>> >>>>> rt_cond_wait(&cond, &mutex, 1000); >>>>> >>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>>> What is your system timer setting ? Are you running in periodic or >>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>>> so rt_cond_wait should return instantaneously. >>> OK, here comes a simplified program that just outputs A, and then hangs. >>> >> I can't reproduce this issue with your test code here, but this might be >> the sign of some timer race depending on how fast is the hw. >> >> By hanging, I assume the box is still ok, right? >> If so, could you please send the output of /proc/xenomai/stat, >> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >> >> TIA, >> >> cat /proc/xenomai/stat > CPU PID MSW CSW PF STAT %CPU NAME > 0 0 0 108606586 0 00500080 100.0 ROOT/0 > 0 0 0 54113426 0 00000082 0.0 rtnet-stack > 0 0 0 1 0 00000082 0.0 rtnet-rtpc > 0 22291 2 3 0 00300186 0.0 main > 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 > 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] > >> cat /proc/xenomai/sched > CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME > 0 0 -1 0 0 master R ROOT/0 > 0 0 98 0 0 master W rtnet-stack > 0 0 0 0 0 master W rtnet-rtpc > 0 22291 1 0 0 master w main > >> cat /proc/xenomai/timer > status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc > >> cat /proc/xenomai/timerstat/master > CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME > 0 1049107334 506070537 324149 - NULL [host-timer/0] > 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] > 0 1 1 - - xnthread_ti main > > Thanks. It looks like the timer did tick but the wakeup event was missed. The thread is still waiting for it (stat xxxxxxx6 means delayed+pending, which is the mode rt_cond_wait() sets for the thread). We do have a problem, it seems. -- Philippe. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:22 ` Philippe Gerum @ 2008-03-03 11:26 ` Anders Blomdell 2008-03-03 11:43 ` Jan Kiszka 2008-03-03 12:48 ` Philippe Gerum 2008-03-03 12:12 ` Anders Blomdell 1 sibling, 2 replies; 13+ messages in thread From: Anders Blomdell @ 2008-03-03 11:26 UTC (permalink / raw) To: philippe.gerum; +Cc: xenomai-help Philippe Gerum wrote: > Anders Blomdell wrote: >> Philippe Gerum wrote: >>> Anders Blomdell wrote: >>>> Gilles Chanteperdrix wrote: >>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>>>> <anders.blomdell@domain.hid> wrote: >>>>>> Hi, >>>>>> >>>>>> with xenomai 2.4.1 my call to: >>>>>> >>>>>> rt_cond_wait(&cond, &mutex, 1000); >>>>>> >>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>>>> What is your system timer setting ? Are you running in periodic or >>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>>>> so rt_cond_wait should return instantaneously. >>>> OK, here comes a simplified program that just outputs A, and then hangs. >>>> >>> I can't reproduce this issue with your test code here, but this might be >>> the sign of some timer race depending on how fast is the hw. >>> >>> By hanging, I assume the box is still ok, right? >>> If so, could you please send the output of /proc/xenomai/stat, >>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >>> >>> TIA, >>> >>> cat /proc/xenomai/stat >> CPU PID MSW CSW PF STAT %CPU NAME >> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >> 0 22291 2 3 0 00300186 0.0 main >> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >> >>> cat /proc/xenomai/sched >> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >> 0 0 -1 0 0 master R ROOT/0 >> 0 0 98 0 0 master W rtnet-stack >> 0 0 0 0 0 master W rtnet-rtpc >> 0 22291 1 0 0 master w main >> >>> cat /proc/xenomai/timer >> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >> >>> cat /proc/xenomai/timerstat/master >> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >> 0 1049107334 506070537 324149 - NULL [host-timer/0] >> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >> 0 1 1 - - xnthread_ti main >> >> > > Thanks. It looks like the timer did tick but the wakeup event was > missed. The thread is still waiting for it (stat xxxxxxx6 means > delayed+pending, which is the mode rt_cond_wait() sets for the thread). > We do have a problem, it seems. > OK, what can I do to be of assistance? /Anders -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:26 ` Anders Blomdell @ 2008-03-03 11:43 ` Jan Kiszka 2008-03-03 12:48 ` Philippe Gerum 1 sibling, 0 replies; 13+ messages in thread From: Jan Kiszka @ 2008-03-03 11:43 UTC (permalink / raw) To: Anders Blomdell; +Cc: xenomai-help Anders Blomdell wrote: > Philippe Gerum wrote: >> Anders Blomdell wrote: >>> Philippe Gerum wrote: >>>> Anders Blomdell wrote: >>>>> Gilles Chanteperdrix wrote: >>>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>>>>> <anders.blomdell@domain.hid> wrote: >>>>>>> Hi, >>>>>>> >>>>>>> with xenomai 2.4.1 my call to: >>>>>>> >>>>>>> rt_cond_wait(&cond, &mutex, 1000); >>>>>>> >>>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>>>>> What is your system timer setting ? Are you running in periodic or >>>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>>>>> so rt_cond_wait should return instantaneously. >>>>> OK, here comes a simplified program that just outputs A, and then hangs. >>>>> >>>> I can't reproduce this issue with your test code here, but this might be >>>> the sign of some timer race depending on how fast is the hw. >>>> >>>> By hanging, I assume the box is still ok, right? >>>> If so, could you please send the output of /proc/xenomai/stat, >>>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >>>> >>>> TIA, >>>> >>>> cat /proc/xenomai/stat >>> CPU PID MSW CSW PF STAT %CPU NAME >>> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >>> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >>> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >>> 0 22291 2 3 0 00300186 0.0 main >>> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >>> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >>> >>>> cat /proc/xenomai/sched >>> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >>> 0 0 -1 0 0 master R ROOT/0 >>> 0 0 98 0 0 master W rtnet-stack >>> 0 0 0 0 0 master W rtnet-rtpc >>> 0 22291 1 0 0 master w main >>> >>>> cat /proc/xenomai/timer >>> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >>> >>>> cat /proc/xenomai/timerstat/master >>> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >>> 0 1049107334 506070537 324149 - NULL [host-timer/0] >>> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >>> 0 1 1 - - xnthread_ti main >>> >>> >> Thanks. It looks like the timer did tick but the wakeup event was >> missed. The thread is still waiting for it (stat xxxxxxx6 means >> delayed+pending, which is the mode rt_cond_wait() sets for the thread). >> We do have a problem, it seems. >> > OK, what can I do to be of assistance? Turn on the ipipe tracer (kernel config), tune it (/proc/ipipe/trace/post_trace_points to, say, 1000), let it triger on rt_cond_wait (echo rt_cond_wait > /proc/ipipe/trace/trigger), and fire up your test. The result will be in /proc/ipipe/trace/frozen. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:26 ` Anders Blomdell 2008-03-03 11:43 ` Jan Kiszka @ 2008-03-03 12:48 ` Philippe Gerum 2008-03-03 13:27 ` Gilles Chanteperdrix 1 sibling, 1 reply; 13+ messages in thread From: Philippe Gerum @ 2008-03-03 12:48 UTC (permalink / raw) To: Anders Blomdell; +Cc: xenomai-help Anders Blomdell wrote: > Philippe Gerum wrote: >> Anders Blomdell wrote: >>> Philippe Gerum wrote: >>>> Anders Blomdell wrote: >>>>> Gilles Chanteperdrix wrote: >>>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>>>>> <anders.blomdell@domain.hid> wrote: >>>>>>> Hi, >>>>>>> >>>>>>> with xenomai 2.4.1 my call to: >>>>>>> >>>>>>> rt_cond_wait(&cond, &mutex, 1000); >>>>>>> >>>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>>>>> What is your system timer setting ? Are you running in periodic or >>>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>>>>> so rt_cond_wait should return instantaneously. >>>>> OK, here comes a simplified program that just outputs A, and then hangs. >>>>> >>>> I can't reproduce this issue with your test code here, but this might be >>>> the sign of some timer race depending on how fast is the hw. >>>> >>>> By hanging, I assume the box is still ok, right? >>>> If so, could you please send the output of /proc/xenomai/stat, >>>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >>>> >>>> TIA, >>>> >>>> cat /proc/xenomai/stat >>> CPU PID MSW CSW PF STAT %CPU NAME >>> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >>> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >>> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >>> 0 22291 2 3 0 00300186 0.0 main >>> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >>> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >>> >>>> cat /proc/xenomai/sched >>> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >>> 0 0 -1 0 0 master R ROOT/0 >>> 0 0 98 0 0 master W rtnet-stack >>> 0 0 0 0 0 master W rtnet-rtpc >>> 0 22291 1 0 0 master w main >>> >>>> cat /proc/xenomai/timer >>> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >>> >>>> cat /proc/xenomai/timerstat/master >>> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >>> 0 1049107334 506070537 324149 - NULL [host-timer/0] >>> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >>> 0 1 1 - - xnthread_ti main >>> >>> >> Thanks. It looks like the timer did tick but the wakeup event was >> missed. The thread is still waiting for it (stat xxxxxxx6 means >> delayed+pending, which is the mode rt_cond_wait() sets for the thread). >> We do have a problem, it seems. >> > OK, what can I do to be of assistance? > Are you running the application over GDB? -- Philippe. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 12:48 ` Philippe Gerum @ 2008-03-03 13:27 ` Gilles Chanteperdrix 2008-03-03 13:52 ` Philippe Gerum 2008-03-03 16:02 ` Anders Blomdell 0 siblings, 2 replies; 13+ messages in thread From: Gilles Chanteperdrix @ 2008-03-03 13:27 UTC (permalink / raw) To: philippe.gerum; +Cc: xenomai-help On Mon, Mar 3, 2008 at 1:48 PM, Philippe Gerum <philippe.gerum@domain.hid> wrote: > > Anders Blomdell wrote: > > Philippe Gerum wrote: > >> Anders Blomdell wrote: > >>> Philippe Gerum wrote: > >>>> Anders Blomdell wrote: > >>>>> Gilles Chanteperdrix wrote: > >>>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell > >>>>>> <anders.blomdell@domain.hid> wrote: > >>>>>>> Hi, > >>>>>>> > >>>>>>> with xenomai 2.4.1 my call to: > >>>>>>> > >>>>>>> rt_cond_wait(&cond, &mutex, 1000); > >>>>>>> > >>>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be > >>>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? > >>>>>> What is your system timer setting ? Are you running in periodic or > >>>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, > >>>>>> so rt_cond_wait should return instantaneously. > >>>>> OK, here comes a simplified program that just outputs A, and then hangs. > >>>>> > >>>> I can't reproduce this issue with your test code here, but this might be > >>>> the sign of some timer race depending on how fast is the hw. > >>>> > >>>> By hanging, I assume the box is still ok, right? > >>>> If so, could you please send the output of /proc/xenomai/stat, > >>>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? > >>>> > >>>> TIA, > >>>> > >>>> cat /proc/xenomai/stat > >>> CPU PID MSW CSW PF STAT %CPU NAME > >>> 0 0 0 108606586 0 00500080 100.0 ROOT/0 > >>> 0 0 0 54113426 0 00000082 0.0 rtnet-stack > >>> 0 0 0 1 0 00000082 0.0 rtnet-rtpc > >>> 0 22291 2 3 0 00300186 0.0 main > >>> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 > >>> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] > >>> > >>>> cat /proc/xenomai/sched > >>> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME > >>> 0 0 -1 0 0 master R ROOT/0 > >>> 0 0 98 0 0 master W rtnet-stack > >>> 0 0 0 0 0 master W rtnet-rtpc > >>> 0 22291 1 0 0 master w main > >>> > >>>> cat /proc/xenomai/timer > >>> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc > >>> > >>>> cat /proc/xenomai/timerstat/master > >>> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME > >>> 0 1049107334 506070537 324149 - NULL [host-timer/0] > >>> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] > >>> 0 1 1 - - xnthread_ti main > >>> > >>> > >> Thanks. It looks like the timer did tick but the wakeup event was > >> missed. The thread is still waiting for it (stat xxxxxxx6 means > >> delayed+pending, which is the mode rt_cond_wait() sets for the thread). > >> We do have a problem, it seems. > >> > > OK, what can I do to be of assistance? > > > > Are you running the application over GDB? Cannot this be that the constant (3) used in rthal_timer_program_shot is a bit too small ? -- Gilles Chanteperdrix ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 13:27 ` Gilles Chanteperdrix @ 2008-03-03 13:52 ` Philippe Gerum 2008-03-03 16:02 ` Anders Blomdell 1 sibling, 0 replies; 13+ messages in thread From: Philippe Gerum @ 2008-03-03 13:52 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-help Gilles Chanteperdrix wrote: > On Mon, Mar 3, 2008 at 1:48 PM, Philippe Gerum <philippe.gerum@domain.hid> wrote: >> Anders Blomdell wrote: >> > Philippe Gerum wrote: >> >> Anders Blomdell wrote: >> >>> Philippe Gerum wrote: >> >>>> Anders Blomdell wrote: >> >>>>> Gilles Chanteperdrix wrote: >> >>>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >> >>>>>> <anders.blomdell@domain.hid> wrote: >> >>>>>>> Hi, >> >>>>>>> >> >>>>>>> with xenomai 2.4.1 my call to: >> >>>>>>> >> >>>>>>> rt_cond_wait(&cond, &mutex, 1000); >> >>>>>>> >> >>>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >> >>>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >> >>>>>> What is your system timer setting ? Are you running in periodic or >> >>>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >> >>>>>> so rt_cond_wait should return instantaneously. >> >>>>> OK, here comes a simplified program that just outputs A, and then hangs. >> >>>>> >> >>>> I can't reproduce this issue with your test code here, but this might be >> >>>> the sign of some timer race depending on how fast is the hw. >> >>>> >> >>>> By hanging, I assume the box is still ok, right? >> >>>> If so, could you please send the output of /proc/xenomai/stat, >> >>>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >> >>>> >> >>>> TIA, >> >>>> >> >>>> cat /proc/xenomai/stat >> >>> CPU PID MSW CSW PF STAT %CPU NAME >> >>> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >> >>> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >> >>> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >> >>> 0 22291 2 3 0 00300186 0.0 main >> >>> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >> >>> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >> >>> >> >>>> cat /proc/xenomai/sched >> >>> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >> >>> 0 0 -1 0 0 master R ROOT/0 >> >>> 0 0 98 0 0 master W rtnet-stack >> >>> 0 0 0 0 0 master W rtnet-rtpc >> >>> 0 22291 1 0 0 master w main >> >>> >> >>>> cat /proc/xenomai/timer >> >>> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >> >>> >> >>>> cat /proc/xenomai/timerstat/master >> >>> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >> >>> 0 1049107334 506070537 324149 - NULL [host-timer/0] >> >>> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >> >>> 0 1 1 - - xnthread_ti main >> >>> >> >>> >> >> Thanks. It looks like the timer did tick but the wakeup event was >> >> missed. The thread is still waiting for it (stat xxxxxxx6 means >> >> delayed+pending, which is the mode rt_cond_wait() sets for the thread). >> >> We do have a problem, it seems. >> >> >> > OK, what can I do to be of assistance? >> > >> >> Are you running the application over GDB? > > Cannot this be that the constant (3) used in rthal_timer_program_shot > is a bit too small ? > It indeed seems that the default calibration has been overridden using a zero value, but the timer object does elapse, so it is unlikely that a bad programming prevented the LAPIC from firing this shot. Looking at the thread timeout field, it also seems to confirm this, since a zero return means that the timer is inactive, i.e. it has been dequeued after the tick was processed. This said, maybe we could try raising the default calibration dynamically to 1 us (> /proc/xenomai/latency), so that the I-pipe would be asked to handle the job directly for any earlier shot. Any change in behaviour would give us a hint about what goes wrong. -- Philippe. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 13:27 ` Gilles Chanteperdrix 2008-03-03 13:52 ` Philippe Gerum @ 2008-03-03 16:02 ` Anders Blomdell 1 sibling, 0 replies; 13+ messages in thread From: Anders Blomdell @ 2008-03-03 16:02 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai-help Gilles Chanteperdrix wrote: > On Mon, Mar 3, 2008 at 1:48 PM, Philippe Gerum <philippe.gerum@domain.hid> wrote: >> Anders Blomdell wrote: >> > Philippe Gerum wrote: >> >> Anders Blomdell wrote: >> >>> Philippe Gerum wrote: >> >>>> Anders Blomdell wrote: >> >>>>> Gilles Chanteperdrix wrote: >> >>>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >> >>>>>> <anders.blomdell@domain.hid> wrote: >> >>>>>>> Hi, >> >>>>>>> >> >>>>>>> with xenomai 2.4.1 my call to: >> >>>>>>> >> >>>>>>> rt_cond_wait(&cond, &mutex, 1000); >> >>>>>>> >> >>>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >> >>>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >> >>>>>> What is your system timer setting ? Are you running in periodic or >> >>>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >> >>>>>> so rt_cond_wait should return instantaneously. >> >>>>> OK, here comes a simplified program that just outputs A, and then hangs. >> >>>>> >> >>>> I can't reproduce this issue with your test code here, but this might be >> >>>> the sign of some timer race depending on how fast is the hw. >> >>>> >> >>>> By hanging, I assume the box is still ok, right? >> >>>> If so, could you please send the output of /proc/xenomai/stat, >> >>>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >> >>>> >> >>>> TIA, >> >>>> >> >>>> cat /proc/xenomai/stat >> >>> CPU PID MSW CSW PF STAT %CPU NAME >> >>> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >> >>> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >> >>> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >> >>> 0 22291 2 3 0 00300186 0.0 main >> >>> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >> >>> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >> >>> >> >>>> cat /proc/xenomai/sched >> >>> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >> >>> 0 0 -1 0 0 master R ROOT/0 >> >>> 0 0 98 0 0 master W rtnet-stack >> >>> 0 0 0 0 0 master W rtnet-rtpc >> >>> 0 22291 1 0 0 master w main >> >>> >> >>>> cat /proc/xenomai/timer >> >>> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >> >>> >> >>>> cat /proc/xenomai/timerstat/master >> >>> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >> >>> 0 1049107334 506070537 324149 - NULL [host-timer/0] >> >>> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >> >>> 0 1 1 - - xnthread_ti main >> >>> >> >>> >> >> Thanks. It looks like the timer did tick but the wakeup event was >> >> missed. The thread is still waiting for it (stat xxxxxxx6 means >> >> delayed+pending, which is the mode rt_cond_wait() sets for the thread). >> >> We do have a problem, it seems. >> >> >> > OK, what can I do to be of assistance? >> > >> >> Are you running the application over GDB? > > Cannot this be that the constant (3) used in rthal_timer_program_shot > is a bit too small ? Some more info: The problem is somewhat repeatable, running the following program sometimes brings back the problem. I'm beginning to think that the problem is that 'rt_task_delete(NULL);' doesn't release all thread resources (i.e. memory usage grows continually [(i = 4999) => VmSize: 342504 kB). What have I misunderstood about task deletion? #include <sys/mman.h> #include <native/cond.h> #include <native/mutex.h> #include <native/task.h> #include <native/timer.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> static void suicide(void *arg) { printf("Suicide\n"); rt_task_delete(NULL); } int main(int argc, char *argv[]) { RT_MUTEX mutex; RT_TASK task_main; RT_TASK task; RT_COND cond; int i; mlockall(MCL_CURRENT|MCL_FUTURE); rt_task_shadow(&task_main, "main", 1, T_FPU); if (rt_mutex_create(&mutex, NULL)) { fprintf(stderr, "Failed to create mutex\n"); exit(1); } if (rt_cond_create (&cond, NULL)) { fprintf(stderr, "Failed to create condition\n"); exit(1); } if (rt_timer_set_mode(TM_ONESHOT)) { fprintf(stderr, "Failed to set timer mode\n"); exit(1); } for (i = 0 ; i < 5000 ; i++) { if (i % 100 == 99) { int fd, N; char buf[1000]; fd = open("/proc/self/status", O_RDONLY); while ((N = read(fd, buf, 1000)) > 0) { write(1, buf, N); } close(fd); } if (rt_task_create(&task, NULL, 0, 1, 0)) { fprintf(stderr, "Failed to create task\n"); exit(1); } if (rt_task_start(&task, &suicide, NULL)) { fprintf(stderr, "Failed to start task\n"); exit(1); } rt_mutex_acquire(&mutex, TM_INFINITE); printf("i = %d\n", i); rt_cond_wait(&cond, &mutex, 5000000); printf("wait done\n"); rt_mutex_release(&mutex); } exit(0); } Regards /Anders -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) 2008-03-03 11:22 ` Philippe Gerum 2008-03-03 11:26 ` Anders Blomdell @ 2008-03-03 12:12 ` Anders Blomdell 1 sibling, 0 replies; 13+ messages in thread From: Anders Blomdell @ 2008-03-03 12:12 UTC (permalink / raw) To: philippe.gerum; +Cc: xenomai-help Philippe Gerum wrote: > Anders Blomdell wrote: >> Philippe Gerum wrote: >>> Anders Blomdell wrote: >>>> Gilles Chanteperdrix wrote: >>>>> On Fri, Feb 29, 2008 at 5:54 PM, Anders Blomdell >>>>> <anders.blomdell@domain.hid> wrote: >>>>>> Hi, >>>>>> >>>>>> with xenomai 2.4.1 my call to: >>>>>> >>>>>> rt_cond_wait(&cond, &mutex, 1000); >>>>>> >>>>>> doesn't timeout (signalling works OK). Kernel version is 2.6.23.12, can it be >>>>>> due to CONFIG_NO_HZ=y, or have I misunderstood something? >>>>> What is your system timer setting ? Are you running in periodic or >>>>> aperiodic mode ? If aperiodic, 1000 ticks means 1000 ns, that is 1us, >>>>> so rt_cond_wait should return instantaneously. >>>> OK, here comes a simplified program that just outputs A, and then hangs. >>>> >>> I can't reproduce this issue with your test code here, but this might be >>> the sign of some timer race depending on how fast is the hw. >>> >>> By hanging, I assume the box is still ok, right? >>> If so, could you please send the output of /proc/xenomai/stat, >>> /proc/xenomai/sched, /proc/xenomai/timer and /proc/xenomai/timerstat/master? >>> >>> TIA, >>> >>> cat /proc/xenomai/stat >> CPU PID MSW CSW PF STAT %CPU NAME >> 0 0 0 108606586 0 00500080 100.0 ROOT/0 >> 0 0 0 54113426 0 00000082 0.0 rtnet-stack >> 0 0 0 1 0 00000082 0.0 rtnet-rtpc >> 0 22291 2 3 0 00300186 0.0 main >> 0 0 0 107816863 0 00000000 0.0 IRQ22: rt_eepro100 >> 0 0 0 617309219 0 00000000 0.0 IRQ233: [timer] >> >>> cat /proc/xenomai/sched >> CPU PID PRI PERIOD TIMEOUT TIMEBASE STAT NAME >> 0 0 -1 0 0 master R ROOT/0 >> 0 0 98 0 0 master W rtnet-stack >> 0 0 0 0 0 master W rtnet-rtpc >> 0 22291 1 0 0 master w main >> >>> cat /proc/xenomai/timer >> status=on+watchdog:setup=0:clock=8061167744254256:timerdev=lapic:clockdev=tsc >> >>> cat /proc/xenomai/timerstat/master >> CPU SCHEDULED FIRED TIMEOUT INTERVAL HANDLER NAME >> 0 1049107334 506070537 324149 - NULL [host-timer/0] >> 0 3358790 3358789 662553305 1000000000 xnpod_watch [watchdog] >> 0 1 1 - - xnthread_ti main >> >> > > Thanks. It looks like the timer did tick but the wakeup event was > missed. The thread is still waiting for it (stat xxxxxxx6 means > delayed+pending, which is the mode rt_cond_wait() sets for the thread). > We do have a problem, it seems. > Rebooting solved the problem this time (is this a Windows compatibility feature? :-) Regards Anders -- Anders Blomdell Email: anders.blomdell@domain.hid Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2008-03-03 16:02 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-02-29 16:54 [Xenomai-help] rt_cond_wait doesn't timeout (xenomai 2.4.1) Anders Blomdell 2008-02-29 17:58 ` Gilles Chanteperdrix 2008-03-03 10:30 ` Anders Blomdell 2008-03-03 11:00 ` Philippe Gerum 2008-03-03 11:08 ` Anders Blomdell 2008-03-03 11:22 ` Philippe Gerum 2008-03-03 11:26 ` Anders Blomdell 2008-03-03 11:43 ` Jan Kiszka 2008-03-03 12:48 ` Philippe Gerum 2008-03-03 13:27 ` Gilles Chanteperdrix 2008-03-03 13:52 ` Philippe Gerum 2008-03-03 16:02 ` Anders Blomdell 2008-03-03 12:12 ` Anders Blomdell
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.