Google Contacts

Prep: 
i) Before loading patched evolution, Create a new contact W in Google in Personal for test case 1
ii) Send email to myself, cc "A@A.com" for test case 2
iii) Set Evolution refresh to 1 minute, default addressbook
iv) Rebooted after installing new packages.. just because I can; safer than just a --force-shutdown.

For each new contact, I also added [contact]@[contact].com as email for all created contacts (for search-ability, display, autocomplete, etc).

Test Cases:

1) Observe location of Personal Contact W in Evolution
Expected Results: Contact W appears in Evolution "Personal" group.
Results: Contact W is not visible in Evolution [interesting, possibly desired effect if Evolution does not support a "private" group]

2) New Contact A in Evolution, use quick right click add
Expected Result: Appears in evolution and in Google under MyContacts
Results: As I was searching Google for my new contact, Evo crashed.. Stacktrace2.txt included below
I have the entire apport dump if it helps. Apport decided it was a dupe of 
https://bugs.launchpad.net/ubuntu/+source/evolution/+bug/831842
which is related to https://bugzilla.gnome.org/show_bug.cgi?id=659890
--executed a --force-shutdown, restarted and proceeded. 
I found "A" in my "Other Contacts" which is less then desirable, so a fail here. 

3) New Contact B in Evolution; Close editor, Re-open and add to nonexistent group AAA
Expected Result: Appears in evolution group AAA and in Google under MyContacts & AAA 
Results: Was able to Create B, But then when I tried to re-edit and add Group AAA Evo crashed again, the Stacktrace3 is below. 
Apport wanted to keep this one, but I didn't let it since I am not using their binaries.
On --force/shutdown + reload it crashed again (didn't bother attaching this one).. 
then another --force-shutdown+reload I was back, but group AAA was not added to contact B.

4) New Contact BB in Evolution, add to nonexistent group AA while in editor
Expected Result: Appears in evolution group AA and in Google under MyContacts & AA 
Results: I forgot to add the new group on initial create, but I noticed B did not appear right away 

5) New Contact C in Evolution, add to existing group Evo AA 
Expected Result: Appears in evolution group AA and in Google under MyContacts,AA 

6) New Contact D in Evolution, add to Personal group
Expected Result: Appears in evolution group Personal and Google under MyContacts & Personal 

7) Editing Existing Contact in Evolution, no group membership, modify phone number and save.  
Expected Result: Should be no change in groups in Evolution or in Google online, but with updated phone

8) Edit Existing Contact in Evolution, add a nonexistent group BB
Expected Result: Should appear in group BB in evolution and in MyContacts and BB online at Google

9) Edit Existing Contact in Evolution, add to existing group BB
Expected Result: Should appear in group BB in evolution and in MyContacts and BB online at Google

10) Edit Existing Contact in Evolution and add to Personal group
Expected results: Should appear in group Personal in evolution and in MyContacts, Personal groups online at Google

11) Create new Google Contact X, no groups
Expected Result: New contact in Evolution, no groups

12) Create new Google Contact Y, create nonexistent group CC
Expected Result: New contact in Evolution, group CC

13) Create new Google Contact Z, add to group CC and AA
Expected Result: New contact in Evolution, group CC and AA

14) Move Contact Z into Personal
Expected Result: Contact Z in Evolution, in both groups CC and Personal 

15) Remove A,B,Y,Z in Evolution
Expected Result: Google shows A,B,Y,Z deleted

16) Remove C,D,W,X in Google
Expected Result: Evolution shows C,D,W,X

17) all users have been removed from group CC in Google and Delete the Group
Expected Results: Group remains in Evolution (>not sure about this)

18) Add a user in evolution into group CC
Expected Results: Group shows up in Google again

== Stacktrace2 ==

#0  g_logv (log_domain=0x7fd934513efc "e-utils", log_level=<optimized out>, format=0x7fd9345186ab "%s: %s", args1=0x7ffffdcc66c8) at /build/buildd/glib2.0-2.31.20/./glib/gmessages.c:765
        domain = 0x0
        data = <optimized out>
        depth = 0
        log_func = <optimized out>
        domain_fatal_mask = <optimized out>
        masquerade_fatal = <optimized out>
        test_level = <optimized out>
        was_fatal = 0
        was_recursion = 0
        i = <optimized out>
#1  0x00007fd932ceb312 in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at /build/buildd/glib2.0-2.31.20/./glib/gmessages.c:792
        args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffffdcc67a0, reg_save_area = 0x7ffffdcc66e0}}
#2  0x00007fd93450ec94 in e_load_ui_builder_definition (builder=0x2cea4a0, basename=0x7fd91f2cbd90 "eab-contact-duplicate-detected.ui") at e-util.c:320
        filename = 0x36f7400 "\240\037`\003"
        error = 0x356a600
        __PRETTY_FUNCTION__ = "e_load_ui_builder_definition"
#3  0x00007fd91f2c4063 in match_query_callback (contact=0x4335f30, match=0x7fd91818fe90, type=<optimized out>, closure=0x2cdf8b0) at eab-contact-merging.c:597
        builder = 0x2cea4a0
        container = <optimized out>
        merge_button = <optimized out>
        widget = <optimized out>
        lookup = 0x2cdf8b0
        same_uids = -1
#4  0x00007fd91f2c2f11 in query_cb (source_object=<optimized out>, result=<optimized out>, user_data=0x4304da0) at eab-contact-compare.c:670
        info = 0x4304da0
        best_match = EAB_CONTACT_MATCH_EXACT
        best_contact = 0x7fd91818fe90
        book_client = 0x2833a70
        remaining_contacts = 0x3898050
        contacts = 0x3835550
        error = 0x0
        ii = <optimized out>
        __PRETTY_FUNCTION__ = "query_cb"
#5  0x00007fd93325398d in g_simple_async_result_complete (simple=0x3a54b30) at /build/buildd/glib2.0-2.31.20/./gio/gsimpleasyncresult.c:767
        current_source = <optimized out>
        current_context = <optimized out>
        __PRETTY_FUNCTION__ = "g_simple_async_result_complete"
#6  0x00007fd934068fc9 in finish_async_op (async_data=<optimized out>, error=0x0, in_idle=0) at e-client.c:2288
        simple = 0x3a54b30
        __PRETTY_FUNCTION__ = "finish_async_op"
#7  0x00007fd93406dbf4 in async_result_ready_cb (source_object=0x491a2d0, result=0x4253a00, user_data=0x4b2aa90) at e-client.c:2325
        error = 0x0
        async_data = 0x4b2aa90
        client = <optimized out>
        __PRETTY_FUNCTION__ = "async_result_ready_cb"
#8  0x00007fd93325398d in g_simple_async_result_complete (simple=0x4253a00) at /build/buildd/glib2.0-2.31.20/./gio/gsimpleasyncresult.c:767
        current_source = <optimized out>
        current_context = <optimized out>
        __PRETTY_FUNCTION__ = "g_simple_async_result_complete"
#9  0x00007fd933253abc in complete_in_idle_cb (data=0x4253a00) at /build/buildd/glib2.0-2.31.20/./gio/gsimpleasyncresult.c:779
        simple = <optimized out>
#10 0x00007fd932ce3dda in g_main_dispatch (context=0x17f7cb0) at /build/buildd/glib2.0-2.31.20/./glib/gmain.c:2510
        dispatch = 0x7fd932ce1a30 <g_idle_dispatch>
        was_in_call = 0
        user_data = 0x4253a00
        callback = 0x7fd933253aa0 <complete_in_idle_cb>
        cb_funcs = 0x7fd932f8f9a0
        cb_data = 0x471d050
        current_source_link = {data = 0x47a2000, next = 0x0}
        need_destroy = <optimized out>
        source = 0x47a2000
        current = 0x1945220
        i = <optimized out>
#11 g_main_context_dispatch (context=0x17f7cb0) at /build/buildd/glib2.0-2.31.20/./glib/gmain.c:3047
No locals.
#12 0x00007fd932ce41a0 in g_main_context_iterate (dispatch=1, block=<optimized out>, context=0x17f7cb0, self=<optimized out>) at /build/buildd/glib2.0-2.31.20/./glib/gmain.c:3118
        timeout = 0
        some_ready = 1
        fds = <optimized out>
        max_priority = 0
        nfds = 6
        allocated_nfds = <optimized out>
#13 g_main_context_iterate (context=0x17f7cb0, block=<optimized out>, dispatch=1, self=<optimized out>) at /build/buildd/glib2.0-2.31.20/./glib/gmain.c:3055
        some_ready = 1
#14 0x00007fd932ce459a in g_main_loop_run (loop=0x1e50920) at /build/buildd/glib2.0-2.31.20/./glib/gmain.c:3312
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#15 0x00007fd9336d229d in gtk_main () at /build/buildd/gtk+3.0-3.3.18/./gtk/gtkmain.c:1165
        loop = 0x1e50920
#16 0x0000000000401f72 in main (argc=1, argv=0x7ffffdcc6c28) at main.c:707
        shell = 0x18f6000
        client = <optimized out>
        error = 0x0#0  0x00007f74f4bc7445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        resultvar = 0
        pid = <optimized out>
        selftid = 6371


== Stacktrace3 ==


#1  0x00007f74f4bcabab in __GI_abort () at abort.c:91
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x4, sa_sigaction = 0x4}, sa_mask = {__val = {5, 140140325052072, 31, 140140300235941, 1, 140140298776785, 5, 140140300240185, 3, 140139917214286, 2, 140140300235888, 1, 140140300244868, 3, 140139917214260}}, sa_flags = 12, sa_restorer = 0x7f74f4d09788}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007f74f4c030be in __libc_message (do_abort=2, fmt=0x7f74f4d0b250 "*** glibc detected *** %s: %s: 0x%s ***\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:201
        ap = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7f74ddfc0bb0, reg_save_area = 0x7f74ddfc0ac0}}
        ap_copy = {{gp_offset = 16, fp_offset = 48, overflow_arg_area = 0x7f74ddfc0bb0, reg_save_area = 0x7f74ddfc0ac0}}
        fd = 2
        on_2 = <optimized out>
        list = <optimized out>
        nlist = <optimized out>
        cp = <optimized out>
        written = <optimized out>
#3  0x00007f74f4c0d8b6 in malloc_printerr (action=3, str=0x7f74f4d0b440 "double free or corruption (fasttop)", ptr=<optimized out>) at malloc.c:5007
        buf = "00007f74c8b26a70"
        cp = <optimized out>
#4  0x00007f74f10fa818 in _gdata_entry_update_from_e_contact (backend=0x219c000, entry=<optimized out>, contact=<optimized out>, ensure_personal_group=0) at e-book-backend-google.c:3066
        category_id = 0x7f74c8b26a70 ""
        category_name = 0x7f74c9266e50 "AAA"
        system_group_id = 0x0
        priv = 0x219c080
        attributes = <optimized out>
        iter = <optimized out>
        category_names = 0x29c76c0
        name_struct = <optimized out>
        photo = <optimized out>
        have_email_primary = <optimized out>
        have_im_primary = <optimized out>
        have_phone_primary = <optimized out>
        have_postal_primary = <optimized out>
        have_org_primary = <optimized out>
        have_uri_primary = <optimized out>
        title = <optimized out>
        role = <optimized out>
        note = <optimized out>
        bdate = <optimized out>
        url = <optimized out>
        __PRETTY_FUNCTION__ = "_gdata_entry_update_from_e_contact"
#5  0x00007f74f10fb926 in e_book_backend_google_modify_contact (backend=0x219c000, book=0x7f74d009b4c0, opid=54, cancellable=0x7f74cd0ddf50, vcard_str=<optimized out>) at e-book-backend-google.c:1843
        priv = 0x219c080
        contact = 0x7f74cd0cc980
        cached_contact = 0x33c0d80
        old_photo = <optimized out>
        new_photo = <optimized out>
        entry = 0x7f74c899ba20
        uid = <optimized out>
        data = <optimized out>
        __PRETTY_FUNCTION__ = "e_book_backend_google_modify_contact"
#6  0x00007f74f609ff37 in operation_thread (data=0x7f74cd0ddf80, user_data=<optimized out>) at e-data-book.c:165
        op = 0x7f74cd0ddf80
        backend = 0x219c000
#7  0x00007f74f51d3058 in g_thread_pool_thread_proxy (data=<optimized out>) at /build/buildd/glib2.0-2.31.20/./glib/gthreadpool.c:309
        task = 0x7f74cd0ddf80
        pool = 0x21a0d00
#8  0x00007f74f51d27f5 in g_thread_proxy (data=0x7f74d001c680) at /build/buildd/glib2.0-2.31.20/./glib/gthread.c:801
        thread = 0x7f74d001c680
#9  0x00007f74f4f53e9a in start_thread (arg=0x7f74ddfc1700) at pthread_create.c:308
        __res = <optimized out>
        pd = 0x7f74ddfc1700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 293679126760427969, 140733937919760, 140139917220288, 35238048, 3, -361730099933834815, -361780598559174207}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#10 0x00007f74f4c8174d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locals.
#11 0x0000000000000000 in ?? ()
No symbol table info available.
