gnome-panel crashes with libgweather 40.0
gnome-panel 3.41.2 crashes with the following stack trace:
Thread 1 "gnome-panel" received signal SIGSEGV, Segmentation fault.
db_world_timezones_get_at (v=..., index=0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:34
34 return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
(gdb) bt
#0 db_world_timezones_get_at (v=..., index=0) at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:34
#1 0x00007fffeeac4320 in gweather_timezone_get_tzid (zone=zone@entry=0x7fffe8031130) at ../libgweather/gweather-timezone.c:360
#2 0x00007fffeeb57b35 in clock_location_is_current_timezone (loc=loc@entry=0x5555558a4740 [ClockLocation]) at clock-location.c:322
#3 0x00007fffeeb57b91 in clock_location_is_current (loc=loc@entry=0x5555558a4740 [ClockLocation]) at clock-location.c:335
#4 0x00007fffeeb52cd0 in location_weather_updated_cb (location=0x5555558a4740 [ClockLocation], info=0x7fffe801e0c0 [GWeatherInfo], data=0x55555572ca50)
at clock-applet.c:862
It happens because clock_location_get_gweather_timezone
returns a destroyed timezone object. The gweather_location_unref (gloc)
call at the end of that function also unrefs the timezone with the new libgweather.
My location info is:
(gdb) p *loc->priv->loc
$14 = {db = 0x555555a368c0, db_idx = 5780, ref = {base = 0x7fffec0a31b0, size = 60}, _english_name = 0x0, _local_name = 0x555555a69f60 "Vnukovo Airport",
_local_sort_name = 0x0, _english_sort_name = 0x0, parent_idx = 225, _parent = 0x0, _children = 0x0, _timezone = 0x0,
level = GWEATHER_LOCATION_WEATHER_STATION, _country_code = 0x0, tz_hint_idx = 65535, _station_code = 0x0, latitude = 0.97127572873484425,
longitude = 0.65042604039431762, latlon_valid = 1, ref_count = 2}