[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1013934: xfce4-weather-plugin segfaults when left-clicking on the icon



Package: xfce4-weather-plugin
Version: 0.11.0-1

(Fully reproducible for me tonight, but may depend on data from met.no.)

After installing the -dbgsym package and attaching gdb, I got:

Thread 1 "panel-10-weathe" received signal SIGSEGV, Segmentation fault.
__strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120
120	../sysdeps/x86_64/multiarch/../strlen.S: No such file or directory.
(gdb) bt
#0  __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:120
#1  0x00007fba04034a74 in g_strdup ()
    at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fba0284774a in calculate_symbol
    (current_conditions=0, timeslice=0x55d0aaea1260) at weather-data.c:620
#3  make_combined_timeslice
    (wd=wd@entry=0x55d0aae86b80, interval=interval@entry=0x55d0aaedd720, between_t=between_t@entry=0x7fffa20d5638, current_conditions=current_conditions@entry=0) at weather-data.c:772
#4  0x00007fba02849c40 in make_forecast_data
    (wd=0x55d0aae86b80, daydata=daydata@entry=0x7fb9f001c230, day=day@entry=4, dt=dt@entry=NIGHT) at weather-data.c:1367
#5  0x00007fba02850af2 in add_forecast_cell
    (time_of_day=3, day=4, daydata=0x7fb9f001c230, data=0x55d0aafea070)
    at weather-summary.c:870
#6  make_forecast (data=0x55d0aafea070) at weather-summary.c:1003
#7  create_forecast_tab (data=0x55d0aafea070) at weather-summary.c:1063
#8  create_summary_window (data=data@entry=0x55d0aafea070)
    at weather-summary.c:1220
#9  0x00007fba0284370a in forecast_click
    (widget=<optimized out>, user_data=0x55d0aafea070) at weather.c:1529
#10 forecast_click (widget=<optimized out>, user_data=0x55d0aafea070)
    at weather.c:1518
--Type <RET> for more, q to quit, c to continue without paging--
#11 0x00007fba02843778 in cb_click
    (widget=<optimized out>, event=<optimized out>, user_data=<optimized out>)
    at weather.c:1549
#12 0x00007fba0498191b in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#13 0x00007fba0411e0a2 in g_closure_invoke ()
    at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007fba04130413 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007fba04136259 in g_signal_emit_valist ()
    at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007fba04136c3f in g_signal_emit ()
    at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007fba0492bd14 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007fba047dee10 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007fba047e0a73 in gtk_main_do_event ()
    at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#20 0x00007fba044c9785 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#21 0x00007fba044fd2e2 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#22 0x00007fba04014e6b in g_main_context_dispatch ()
    at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007fba04015118 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007fba0401540b in g_main_loop_run ()
    at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#25 0x00007fba047dfa65 in gtk_main ()
--Type <RET> for more, q to quit, c to continue without paging--
    at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#26 0x000055d0a9ad3aea in main ()
(gdb) up
#1  0x00007fba04034a74 in g_strdup ()
   from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) up
#2  0x00007fba0284774a in calculate_symbol (current_conditions=0, 
    timeslice=0x55d0aaea1260) at weather-data.c:620
620	    loc->symbol = g_strdup(get_symbol_name(loc->symbol_id));
(gdb) p *loc
$2 = {altitude = 0x55d0ab093110 "32", latitude = 0x55d0ab0ae290 "59.27927", 
  longitude = 0x55d0aaff45e0 "18.30492", 
  temperature_value = 0x55d0ab098360 "22.8", 
  temperature_unit = 0x55d0ab0d3c50 "celsius", 
  wind_dir_deg = 0x55d0ab098570 "150.0", wind_dir_name = 0x55d0ab098500 "SE", 
  wind_speed_mps = 0x55d0ab0e8b90 "2.5", 
  wind_speed_beaufort = 0x55d0ab0e8880 "2.0", 
  humidity_value = 0x55d0ab0e88f0 "86.3", 
  humidity_unit = 0x55d0ab0e8960 "percent", 
  pressure_value = 0x55d0ab0e89d0 "1015.7", 
  pressure_unit = 0x55d0ab0e8a40 "hPa", clouds_percent = {
    0x55d0ab0e8ab0 "0.1", 0x55d0ab0e8b20 "0.1", 0x55d0ab0b4ba0 "0.0", 
    0x55d0ab0987a0 "2.6"}, fog_percent = 0x0, 
  precipitation_value = 0x55d0ab0b4900 "0.0", 
  precipitation_unit = 0x55d0ab0b4970 "mm", symbol_id = 40, 
  symbol = 0x55d0ab0b49e0 "PJ\v\253\320U"}
(gdb) 

loc->symbol_id is out of bounds (there are way fewer than 40 defined symbols). I suspect that the "update symbol name" code should be restricted to cases when loc->symbol_id has just been changed (which is not the case here: current_conditions is false, as per the backtrace, and loc->fog_percent is 0).


Reply to: