After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 667359 - random crash on config change ...
random crash on config change ...
Status: RESOLVED FIXED
Product: evolution-groupwise
Classification: Deprecated
Component: Calendar
3.2.x
Other Linux
: Normal blocker
: ---
Assigned To: Evolution Groupwise development team
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2012-01-05 14:07 UTC by Michael Meeks
Modified: 2012-06-27 11:59 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch for evolution-groupwise (586 bytes, patch)
2012-01-17 09:38 UTC, Vibha Yadav
needs-work Details | Review
Patch for evolution-groupwise master (1.57 KB, patch)
2012-01-17 09:43 UTC, Vibha Yadav
committed Details | Review
Patch for evolution-groupwise 3-2 branch (4.91 KB, patch)
2012-02-23 11:36 UTC, Vibha Yadav
needs-work Details | Review
Patch for evolution-groupwise (5.45 KB, patch)
2012-03-02 10:35 UTC, Vibha Yadav
none Details | Review
Patch for evolution-groupwise (5.60 KB, patch)
2012-03-06 13:51 UTC, Vibha Yadav
committed Details | Review

Description Michael Meeks 2012-01-05 14:07:38 UTC
No idea what I did; I didn't knowingly change any config key: and bang.

Program received signal SIGSEGV, Segmentation fault.

Thread 3 (Thread 0xb5cdfb70 (LWP 10571))

  • #0 read
    at ../sysdeps/unix/syscall-template.S line 82
  • #1 read
    at /usr/include/bits/unistd.h line 45
  • #2 unix_signal_helper_thread
    at gmain.c line 4551
  • #3 g_thread_create_proxy
    at gthread.c line 1962
  • #4 start_thread
    at pthread_create.c line 301
  • #5 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 133

Comment 1 Michael Meeks 2012-01-05 14:17:13 UTC
A trace with (perhaps) more helpful debuginfo for all threads: though my bugzilla helpfully hides the other threads from you (urgh):


Thread 3 (Thread 0xb5cdfb70 (LWP 10571))

  • #0 read
    at ../sysdeps/unix/syscall-template.S line 82
  • #1 read
    at /usr/include/bits/unistd.h line 45
  • #2 unix_signal_helper_thread
    at gmain.c line 4551
  • #3 g_thread_create_proxy
    at gthread.c line 1962
  • #4 start_thread
    at pthread_create.c line 301
  • #5 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 133

Comment 2 Matthew Barnes 2012-01-05 14:33:37 UTC
evolution-groupwise making GConf calls in Thread > 1.

GConfClient is known to not be thread-safe.
Comment 3 Michael Meeks 2012-01-05 16:51:42 UTC
And now another similar bug; I switched week in week view:

Program received signal SIGSEGV, Segmentation fault.

Thread 2980051824 (LWP 14984)

  • #0 link_before
    at dbus-list.c line 122
  • #1 _dbus_list_prepend
    at dbus-list.c line 290
  • #2 _dbus_list_append
    at dbus-list.c line 262
  • #3 _dbus_validate_signature_with_reason
    at dbus-marshal-validate.c line 174
  • #4 validate_body_helper
  • #5 validate_body_helper
  • #6 validate_body_helper
    at dbus-marshal-validate.c line 644
  • #7 validate_body_helper
    at dbus-marshal-validate.c line 494
  • #8 _dbus_validate_body_with_reason
    at dbus-marshal-validate.c line 731
  • #9 _dbus_header_load
    at dbus-marshal-header.c line 1007
  • #10 load_message
    at dbus-message.c line 3996
  • #11 _dbus_message_loader_queue_messages
    at dbus-message.c line 4197
  • #12 _dbus_transport_get_dispatch_status
    at dbus-transport.c line 1103
  • #13 _dbus_transport_queue_messages
    at dbus-transport.c line 1130
  • #14 do_reading
    at dbus-transport-socket.c line 851
  • #15 do_reading
    at dbus-transport-socket.c line 706
  • #16 socket_do_iteration
    at dbus-transport-socket.c line 1162
  • #17 _dbus_transport_do_iteration
    at dbus-transport.c line 978
  • #18 _dbus_connection_do_iteration_unlocked
    at dbus-connection.c line 1232
  • #19 _dbus_connection_block_pending_call
    at dbus-connection.c line 2405
  • #20 dbus_pending_call_block
    at dbus-pending-call.c line 707
  • #21 dbus_connection_send_with_reply_and_block
    at dbus-connection.c line 3514
  • #22 gconf_engine_get_fuller
    at gconf-dbus.c line 1201
  • #23 gconf_engine_get_entry
    at gconf-dbus.c line 1284
  • #24 get
    at gconf-client.c line 1493
  • #25 gconf_client_get_full
    at gconf-client.c line 1543
  • #26 gconf_client_get_bool
    at gconf-client.c line 1778
  • #27 set_default_alarms
    at e-cal-backend-groupwise-utils.c line 986
  • #28 e_gw_item_to_cal_component
    at e-cal-backend-groupwise-utils.c line 1424
  • #29 get_deltas
    at e-cal-backend-groupwise.c line 711
  • #30 delta_thread
    at e-cal-backend-groupwise.c line 789
  • #31 g_thread_create_proxy
    at gthread.c line 1962
  • #32 start_thread
    at pthread_create.c line 301
  • #33 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 133

all other threads quiescent - perhaps I'll run that beast under valgrind ...
Comment 4 Michael Meeks 2012-01-05 17:16:24 UTC
confirming it then - we shouldn't use gconf from other threads; hopefully in the shiny new dconf world, that is no longer a problem. It's possible that my gconf is also too old:

gconf2-3.2.0-2.2.2.i586
Comment 5 Vibha Yadav 2012-01-17 09:38:31 UTC
Created attachment 205428 [details] [review]
Patch for evolution-groupwise

Setting up default alarm in main thread
Comment 6 Vibha Yadav 2012-01-17 09:43:39 UTC
Created attachment 205429 [details] [review]
Patch for evolution-groupwise master

Patch using GSetting as gconf is deprecated now.

Not calling set_default_alarms in main thread as dconf is thread safe.
Comment 7 Chenthill P 2012-02-17 05:44:50 UTC
Review of attachment 205429 [details] [review]:

please commit the patch to master and also to gnome-3-2 branch if applicable.
Comment 8 Chenthill P 2012-02-17 05:46:16 UTC
Review of attachment 205428 [details] [review]:

You would need to get the values from gconf once while opening the calendar and later use that for setting default alarms to appointments or meetings. Down side is that any changes to gconf will only be reflected after a restart of eds which I think is livable, considering we have fixed it in upstream.
Comment 9 Vibha Yadav 2012-02-23 11:36:54 UTC
Created attachment 208246 [details] [review]
Patch for evolution-groupwise 3-2 branch

Reworked on review comments
Comment 10 Vibha Yadav 2012-02-23 11:39:01 UTC
Comment on attachment 205429 [details] [review]
Patch for evolution-groupwise master

created commit 444ca986 on master branch.
Comment 11 Frederic Crozat 2012-02-27 15:08:12 UTC
any review for 3.2 branch patch, by any chance ?
Comment 12 Michael Meeks 2012-02-27 15:46:01 UTC
yep - having a working groupwise backend would be really pleasant ;-)
Comment 13 Chenthill P 2012-02-28 12:37:31 UTC
Review of attachment 208246 [details] [review]:

Please make the changes..

::: src/calendar/e-cal-backend-groupwise.c
@@ +1417,3 @@
+	priv->default_reminder = gconf_client_get_bool (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER, NULL);
+	priv->interval = gconf_client_get_int (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_INTERVAL, NULL);
+	priv->units = gconf_client_get_string (gconf, CALENDAR_CONFIG_DEFAULT_REMINDER_UNITS, NULL);

This is still getting called in a thread as groupwise_open runs in a thread. Please use the main thread to get these values once. Using e_flag to syncronize the threads would be simple.
Comment 14 Vibha Yadav 2012-03-02 10:35:48 UTC
Created attachment 208844 [details] [review]
Patch for evolution-groupwise

Reworked on above comments.
Added the code for getting gconf entries in a function that gets called in main thread.
Using EFlag to synchronize the threads.
Comment 15 Vibha Yadav 2012-03-06 13:51:24 UTC
Created attachment 209085 [details] [review]
Patch for evolution-groupwise

Updated Patch.
Comment 16 Vibha Yadav 2012-03-06 14:02:07 UTC
Comment on attachment 209085 [details] [review]
Patch for evolution-groupwise

created commit 75b99a1 to gnome-3-2 branch