I think I found the root cause for the compiz-config-profile-setter
segfault. The call "ccsFreeContext(context);" in line 218 in
compiz_config_profile_setter.c frees the context object while background
event processing still uses the object, which then leads to the
segfault.

It seems the set_compiz_profile() call returns while a value-changed
callback gets called in the background, which then calls
ccsObjectGetInterface_() on the context object, but by then the context
object already got destroyed.

I think the best way so solve this, would be to wait for the event processing 
to finish before freeing the context object, but I don't know how to do that 
properly. But not freeing the context object in compiz_config_profile_setter.c 
fixes the problem for me (the cssFreeContext() is called right before the 
compiz-config-profile-setter exits, so I think it doesn't really matter much). 
So 
 with this patch the memory gets freed on exiting of the program after the main 
loop has stopped.


** Patch added: "compiz-config-profile-setter_segfault.patch"
   
https://bugs.launchpad.net/ubuntu/+source/unity/+bug/1758009/+attachment/5212325/+files/compiz-config-profile-setter_segfault.patch

** Tags added: patch

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1758009

Title:
  Unity not starting: compiz-config crashes on login

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unity/+bug/1758009/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to