← Back to team overview

dx-packages team mailing list archive

[Bug 1424966] Re: /usr/lib/arm-linux-gnueabihf/indicator-datetime/indicator-datetime-service:5:reset_timer:unity::indicator::datetime::LiveClock::Impl::on_timerfd_cond:g_main_dispatch:g_main_context_dispatch:g_main_context_iterate

 

Confirmed, this is related to the TFD_TIMER_CANCEL_ON_SET change. Looks
like timerfd_settime() is failing and setting errno to ECANCELED. This
isn't listed as a possible error in the manpage but now that we're
hitting ECANCELED a web search turns up the condition pretty quickly.

The ability to return ECANCELED was added was added for this use case:

<http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=99ee5315dac6211e972fa3f23bcc9a0343ff58c4>

> Some applications must be aware of clock realtime being set
> backward. A simple example is a clock applet which arms a timer for
> the next minute display. If clock realtime is set backward then the
> applet displays a stale time for the amount of time which the clock
> was set backwards. Due to that applications poll the time because we
> don't have an interface.
>
> Extend the timerfd interface by adding a flag which puts the timer
> onto a different internal realtime clock. All timers on this clock are
> expired whenever the clock was set.
>
> The timerfd core records the monotonic offset when the timer is
> created. When the timer is armed, then the current offset is compared
> to the previous recorded offset. When it has changed, then
> timerfd_settime returns -ECANCELED. When a timer is read the offset is
> compared and if it changed -ECANCELED returned to user space. Periodic
> timers are not rearmed in the cancelation case.
> http://www.spinics.net/lists/linux-tip-commits/msg11814.html

Likely solution: in indicator-datetime/src/clock-live.cpp, move the
timerfd_create() call from LiveClock::Impl::Impl() to
LiveClock::Impl::reset_timer(), also adding a test to close() the
previous timer if it's not -1.

I will be able to start on this in ~10 hours when my jury duty is done
for the day. If this bug is deemed as supercritical, please feel free to
reclaim the ticket and fix it before then.

-- 
You received this bug notification because you are a member of DX
Packages, which is subscribed to indicator-datetime in Ubuntu.
Matching subscriptions: dx-packages
https://bugs.launchpad.net/bugs/1424966

Title:
  /usr/lib/arm-linux-gnueabihf/indicator-datetime/indicator-datetime-
  service:5:reset_timer:unity::indicator::datetime::LiveClock::Impl::on_timerfd_cond:g_main_dispatch:g_main_context_dispatch:g_main_context_iterate

Status in the base for Ubuntu mobile products:
  New
Status in indicator-datetime package in Ubuntu:
  In Progress

Bug description:
  It happened randomly but several time on RTM/krillin. According to
  errors.u.c it started with 13.10.0+15.04.20150213.1-0ubuntu1 on vivid
  and 13.10.0+15.04.20150213~rtm-0ubuntu1 on RTM.

    [ Charles Kerr ]
    * change the WallClock to detect time changes from
      TFD_TIMER_CANCEL_ON_SET, e.g. when ntp<-->manual is toggled

  
  The Ubuntu Error Tracker has been receiving reports about a problem regarding indicator-datetime.  This problem was most recently seen with version 13.10.0+15.04.20150213.1-0ubuntu1, the problem page at https://errors.ubuntu.com/problem/3b8aefe51ab8eae0b64a89605ae01d5433da3000 contains more details.

  current build number: 242
  device name: krillin
  channel: ubuntu-touch/ubuntu-rtm/14.09-proposed
  last update: 2015-02-23 08:07:23
  version version: 242
  version ubuntu: 20150223
  version device: 20150216-fe747ac
  version custom: 20150216-561-29-186

  Trace:
  https://errors.ubuntu.com/bucket/?id=/usr/lib/arm-linux-gnueabihf/indicator-datetime/indicator-datetime-service%3A5%3Areset_timer%3Aunity%3A%3Aindicator%3A%3Adatetime%3A%3ALiveClock%3A%3AImpl%3A%3Aon_timerfd_cond%3Ag_main_dispatch%3Ag_main_context_dispatch%3Ag_main_context_iterate

To manage notifications about this bug go to:
https://bugs.launchpad.net/canonical-devices-system-image/+bug/1424966/+subscriptions


References