Skip to content

weather@mockturtl: SIGSEGV crash via stale GeoClue D-Bus proxy after idle timeout #8815

Description

@matthew-williams
 * Applet version: 3.6.8
 * Cinnamon version: 6.6.8
 * Distribution: Arch Linux, kernel 6.18.35-1-lts
 * Graphics hardware: N/A (not GPU-related)

Notify author of applet
@Gr3q

Issue

The weather applet crashes Cinnamon with SIGSEGV when using automatic location (GeoClue). GeoClue has a 60-second idle timeout — it starts on request, serves the location, then shuts down. On the next weather refresh cycle, the applet's D-Bus proxy is stale and sends a malformed GVariant, causing a segfault in GLib.

This produced 20 crashes over 12 days, accelerating to 5 crashes in 38 minutes on the worst day. Setting a fixed location (bypassing GeoClue entirely) immediately resolved the crashes.

Stack trace (from coredumpctl)

Stack trace of thread 542054:
#0  0x00007fd7f82dc694 g_variant_type_info_get_type_string (libglib-2.0.so.0 + 0xbe694)
#1  0x00007fd7f8504886 n/a (libgio-2.0.so.0 + 0x120886)
#2  0x00007fd7f8507c18 g_dbus_message_to_blob (libgio-2.0.so.0 + 0x123c18)
#3  0x00007fd7f84f7dc3 n/a (libgio-2.0.so.0 + 0x113dc3)
#4  0x00007fd7f84f86c7 n/a (libgio-2.0.so.0 + 0x1146c7)
#5  0x00007fd7f84f8894 g_dbus_connection_send_message_with_reply (libgio-2.0.so.0 + 0x114894)
#6  0x00007fd7f8506588 n/a (libgio-2.0.so.0 + 0x122588)
#7  0x00007fd7f8514aad n/a (libgio-2.0.so.0 + 0x130aad)
#8  0x00007fd7f8514cbc g_dbus_proxy_call (libgio-2.0.so.0 + 0x130cbc)
#9  0x00007fd7a42887e4 n/a (libgeoclue-2.so.0 + 0xd7e4)

Additional crash variants observed in the same session hit g_str_equal and g_variant_get_child_value — all during GVariant/D-Bus marshalling from libgeoclue-2.so.0.

.xsession-errors also shows repeated warnings from the applet:

(cinnamon:547138): St-CRITICAL **: st_widget_get_theme_node called on the widget
[0x55fce39c90c0 StLabel.hourly-data ("...")] which is not in the stage.

Steps to reproduce

  1. Enable the weather applet with automatic location (GeoClue)
  2. Wait — GeoClue starts on location request, then shuts down after 60 seconds idle
  3. On the next weather refresh, Cinnamon crashes with SIGSEGV

Expected behaviour

The applet should handle GeoClue's idle shutdown gracefully — either keeping the proxy alive, reconnecting, or catching the D-Bus error instead of passing an invalid GVariant.

Workaround

Set a fixed location in the applet settings instead of using automatic location detection.

Versions

  • cinnamon 6.6.8-1
  • muffin 6.6.3-1
  • cjs 128.1-2
  • glib2 2.88.1-1
  • geoclue 2.8.1-1

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions