efl/legacy/edbus
Lucas De Marchi 80bdcca7ed edbus: avoid cyclic unref
If we are freeing a EDBUS_Connection_Name its name_owner_changed signal
handler may hold a pointer and try to unref it when deleting the signal
handler. We can't simply make the signal handler hold a reference to the
connection name, otherwise edbus_connection_name_gc will never be
triggered because of cyclic references.

Thus, just set the cn->name_owner_changed->bus to NULL before trying to
delete the signal handler.

Related log found by Lucas Jóia:

==20607== Invalid read of size 4
==20607==    at 0x6FE29EE: edbus_connection_name_gc.isra.3 (edbus_core.c:375)
==20607==    by 0x6FE4287: edbus_connection_unref (edbus_core.c:1028)
==20607==    by 0x4C8D94: e_msgbus_shutdown (e_msgbus.c:167)
==20607==    by 0x436194: _e_main_shutdown (e_main.c:1136)
==20607==    by 0x434F25: main (e_main.c:1074)
==20607==  Address 0x1461ba68 is 24 bytes inside a block of size 64 free'd
==20607==    at 0x4C2A739: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==20607==    by 0x6FF0E78: edbus_signal_handler_unref (edbus_signal_handler.c:269)
==20607==    by 0x6FE2A48: edbus_connection_name_gc.isra.3 (edbus_core.c:384)
==20607==    by 0x6FE4287: edbus_connection_unref (edbus_core.c:1028)
==20607==    by 0x4C8D94: e_msgbus_shutdown (e_msgbus.c:167)
==20607==    by 0x436194: _e_main_shutdown (e_main.c:1136)
==20607==    by 0x434F25: main (e_main.c:1074)



SVN revision: 81463
2012-12-20 14:52:27 +00:00
..
doc edbus: Fix doxygen layout 2012-11-16 13:07:58 +00:00
m4 edbus: Do not build examples by default 2012-09-21 22:44:05 +00:00
src edbus: avoid cyclic unref 2012-12-20 14:52:27 +00:00
.gitignore edbus: add edbus.spec to gitignore 2012-12-14 16:29:01 +00:00
AUTHORS Add new edbus library, aka e_dbus v2 2012-09-17 20:41:05 +00:00
COPYING add copying (lgpl like elm) and readme. 2012-11-02 14:38:51 +00:00
Makefile.am edbus: Fix undefined ref. to 'EINA_LOG_DOMAIN_GLOBAL' in examples 2012-12-20 01:55:42 +00:00
README add copying (lgpl like elm) and readme. 2012-11-02 14:38:51 +00:00
autogen.sh edbus: exec configure in the end to preserve return code 2012-11-01 16:41:17 +00:00
configure.ac rpm spec for new edbus 2012-11-18 11:22:16 +00:00
edbus.spec.in rpm spec for new edbus 2012-11-18 11:22:16 +00:00
edbus2.pc.in edbus: Fix lib name in edbus2.pc.in 2012-09-26 20:33:53 +00:00

README

ABOUT:
-----

EDBus provides easy access to D-Bus from EFL applications.

EDBus allows connecting to both system and session buses acting as
both client and service roles.

Many official D-Bus specifications and interfaces are supported, namely:

        - org.freedesktop.DBus.Peer: full support (Ping and GetMachineId).
        - org.freedesktop.DBus.Introspectable: full support.
        - org.freedesktop.DBus.Properties: full support.
        - org.freedesktop.DBus.ObjectManager: partial support (under dev).

One can create client-side objects using the low-level methods from
EDBus_Connection and EDBus_Object, or go high level with
EDBus_Proxy.


RELATION TO OLD E_DBUS:
-----------------------

This is a replacement for old library "e_dbus". Its main purpose is to
fix some core bugs and completely encapsulating D-Bus without exposing
libdbus to end-user. One day libdbus may be completely removed as a
dependency.


REQUIREMENTS:
-------------

        - libdbus-1
        - eina >= 1.7
        - ecore >= 1.7


CONTACT:
--------

Bugs, questions, ideas and comments should be addressed to:

        enlightenment-devel@lists.sourceforge.net



COMPILING AND INSTALLING:
-------------------------

Standard autotools process:

        ./autogen.sh    # if trying development
        ./configure     # if running from release tarball
        make
        sudo make install