Thank you for taking the time to report this bug and helping to make Ubuntu 
better. Please execute the following command only once, as it will 
automatically gather debugging information, in a terminal:
apport-collect 1662836

When reporting bugs in the future please use apport by using 'ubuntu-
bug' and the name of the package affected. You can learn more about this
functionality at https://wiki.ubuntu.com/ReportingBugs.

** Changed in: gnome-settings-daemon (Ubuntu)
       Status: New => Incomplete

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to gnome-settings-daemon in Ubuntu.
https://bugs.launchpad.net/bugs/1662836

Title:
  repeatedly turning BT off and off crashes gnome

Status in gnome-settings-daemon package in Ubuntu:
  Incomplete

Bug description:
  A bit of background (not sure if important): in our setup RFKill is
  driving a GPIO to enable / disable the BT transceiver. This is a slow
  operation and it could take ~500ms for the RFKill subsystem to
  complete the operation.

  In the Bluetooth configuration panel if I click on the Bluetooth
  on/off toggle switch 5+ times in a row repeatedly, gnome (or BT
  configuration panel) crashes.

  This is what I have in the journal:
  ```
  gnome-settings-[886]: g_simple_async_result_take_error: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_take_error: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_take_error: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  kernel: BT_RADIO going: on
  kernel: BCM_BT: going ON
  gnome-settings-[886]: g_simple_async_result_take_error: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: g_simple_async_result_complete_in_idle: assertion 
'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed
  gnome-settings-[886]: Failed to set RFKill: Stream has outstanding operation
  gnome-settings-daemon.desktop[886]: **
  gnome-settings-daemon.desktop[886]: 
rfkill-plugin:ERROR:rfkill-glib.c:168:write_change_all_timeout_cb: assertion 
failed: (rfkill->priv->event)
  ```

  Coredump:
  ```
  Core was generated by `/usr/lib/gnome-settings-daemon/gnome-settings-daemon'.
  Program terminated with signal SIGABRT, Aborted.
  #0  __libc_do_syscall () at 
../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
  44      ../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file 
or directory.
  (gdb) bt
  #0  __libc_do_syscall () at 
../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:44
  #1  0xf687bee6 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
  #2  0xf687cbee in __GI_abort () at abort.c:89
  #3  0xf69bc7ea in g_assertion_message () from 
/lib/arm-linux-gnueabihf/libglib-2.0.so.0
  #4  0xf69bc888 in g_assertion_message_expr () from 
/lib/arm-linux-gnueabihf/libglib-2.0.so.0
  #5  0xf285d562 in write_change_all_timeout_cb (rfkill=0x643430, 
rfkill@entry=0x4b3f70) at rfkill-glib.c:168
  #6  0xf285dc68 in cc_rfkill_glib_send_change_all_event (rfkill=0x4b3f70, 
rfkill_type=2, enable=0, cancellable=0xf285e0b8, callback=0xf285c709 
<rfkill_set_cb>,
      user_data=0x492b90) at rfkill-glib.c:242
  #7  0xf285cf78 in engine_set_bluetooth_airplane_mode (enable=<optimized out>, 
manager=0x492b90) at gsd-rfkill-manager.c:345
  #8  handle_set_property (connection=<optimized out>, sender=<optimized out>, 
object_path=<optimized out>, interface_name=<optimized out>,
      property_name=0xf490f528 "BluetoothAirplaneMode", value=0xf4919460, 
error=0xffc75dac, user_data=0x492b90) at gsd-rfkill-manager.c:395
  #9  0xf6b162ea in ?? () from /lib/arm-linux-gnueabihf/libgio-2.0.so.0
  ```

  At least for `assertion 'G_IS_SIMPLE_ASYNC_RESULT (simple)' failed`
  what I think it's happening here is that
  `cc_rfkill_glib_send_change_all_event()` is rapidly called and several
  request for the asynchronous writing are queued on several
  `GSimpleAsyncResult` objects. When the first writing is done in
  `write_change_all_done_cb()` the latest `rfkill->priv->simple` object
  is freed. All the subsequent `write_change_all_done_cb()` callbacks
  find a NULL `rfkill->priv->simple`.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/1662836/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to