forked from enlightenment/efl
80bdcca7ed
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 |
||
---|---|---|
.. | ||
doc | ||
m4 | ||
src | ||
.gitignore | ||
AUTHORS | ||
COPYING | ||
Makefile.am | ||
README | ||
autogen.sh | ||
configure.ac | ||
edbus.spec.in | ||
edbus2.pc.in |
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