OK, I see what's happening here.

For some reason my machine is missing /etc/timezone (OK, I'll fix that in a 
minute; the machine has been upgraded through many versions).
indicator-datetime.c has a timer_func:


855     gboolean
856     timer_func (gpointer user_data)
857     {
858             IndicatorDatetime * self = INDICATOR_DATETIME(user_data);
859             self->priv->timer = 0;
860             GDateTime * dt;
861             update_label(self, &dt);
862             timezone_update_all_labels(self);
863             setup_timer(self, dt);
864             g_date_time_unref(dt);
(gdb)
865             return FALSE;

it relies on update_label initialising 'dt'; but when the timezone can't
be read update_label just leaves dt uninitialised; and timer_func
unreferences the non-initialised dt at line 864 - the patch initialises
dt to NULL and guards the unref.

It might make sense to have set_label_to_time_in_zone be more
cooperative when the timezone can't be read rather than exiting without
setting the pointer - it could always fall back to UTC rather than
having everything else fall apart.

Dave

** Patch added: "Don't seg when we can't read timezone"
   
https://bugs.launchpad.net/ubuntu/+source/indicator-datetime/+bug/804754/+attachment/2199079/+files/indicator-datetime-notimezone.diff

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/804754

Title:
  [Oneiric] unity-panel-service crashed with SIGSEGV in
  g_date_time_unref()

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/indicator-datetime/+bug/804754/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to