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