GNOME Bugzilla – Bug 658631
crash at empathy startup
Last modified: 2011-09-15 23:37:47 UTC
I started empathy this morning and it crashed, the trace looked folks related: (gdb) bt
+ Trace 228392
Created attachment 196092 [details] [review] patch When a Persona is being moved from one Individual to another one (because of re-linking), it might occur that more re-linking happens right away so we can't assert much about the state of things. At best, we can check but definitely not assert.
Review of attachment 196092 [details] [review]: This looks wrong to me - check out the backtrace. Here's the relevant code: private void _disconnect_from_persona (Persona persona, Individual? replacement_individual) { ... if (persona.individual == this) { persona.individual = replacement_individual; } } So this assertion is for the case the !replacement_individual.personas.contains (persona). So we probably need something like: + if (!replacement_individual.personas.contains (persona)) replacement_individual.personas.add (persona); persona.individual = replacement_individual; Please check this out and merge if it seems reasonable.
We need to add some tests so we can be sure whether it's just too strict of an assertion or if it's a legitimate bug we introduced somewhere. But since it's a g_assert(), it won't actually crash in a released version anyhow.
I just got this with Gnome Contacts as well after resuming (so clearly related to the fact of PersonaStores becoming available and Personas being pumped into the Aggregator and relinked).
+ Trace 228397
I get this crash with this steps: Open empathy, in menu go to contact, information and crash .
+ Trace 228402
Thread 1 (Thread 0xb6a7c880 (LWP 5775))
It was actually being caused by personas being removed. The assertion is legitimate, and should remain unchanged. The code at fault was that setting the persona's individual — it's been changed to set it to null if the replacement individual doesn't contain the persona. commit 1f85f89051e63b05e271b418687c242a83e2f296 Author: Philip Withnall <philip@tecnocode.co.uk> Date: Mon Sep 12 23:09:10 2011 +0100 Bug 658631 — crash at empathy startup In the case that a persona is removed and the individual containing that persona is replaced by a different non-null individual which doesn't contain that persona (because it's been removed), we need to set the persona's individual pointer to null rather than the replacement individual. This stops us tripping the assertion in the setter for Persona.individual. Closes: bgo#658631 NEWS | 2 ++ folks/individual.vala | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) commit 406bc1264d3f19c54ea0c929e93814d263a90cc1 Author: Philip Withnall <philip@tecnocode.co.uk> Date: Mon Sep 12 23:07:33 2011 +0100 individual-aggregator: Add some more debug output It turns out to be really useful to see what's being emitted by IndividualAggregator.individuals-changed-detailed. folks/individual-aggregator.vala | 45 +++++++++++++++++++++++++++++++++++++- 1 files changed, 44 insertions(+), 1 deletions(-)
*** Bug 658887 has been marked as a duplicate of this bug. ***
*** Bug 659197 has been marked as a duplicate of this bug. ***