From d1271ea48a3ba8c12e67fe8459982fb272fd8c03 Mon Sep 17 00:00:00 2001 From: Samuli Suominen Date: Sun, 19 Dec 2010 01:18:07 +0000 Subject: punt old (Portage version: 2.2.0_alpha9/cvs/Linux x86_64) --- sys-apps/dbus/Manifest | 3 - sys-apps/dbus/dbus-1.2.24-r1.ebuild | 128 ------- sys-apps/dbus/dbus-1.2.24-r2.ebuild | 171 --------- .../dbus/files/dbus-1.2.24-thread-safety.patch | 393 --------------------- 4 files changed, 695 deletions(-) delete mode 100644 sys-apps/dbus/dbus-1.2.24-r1.ebuild delete mode 100644 sys-apps/dbus/dbus-1.2.24-r2.ebuild delete mode 100644 sys-apps/dbus/files/dbus-1.2.24-thread-safety.patch (limited to 'sys-apps/dbus') diff --git a/sys-apps/dbus/Manifest b/sys-apps/dbus/Manifest index fb4da273d4f7..56dde4246e50 100644 --- a/sys-apps/dbus/Manifest +++ b/sys-apps/dbus/Manifest @@ -1,12 +1,9 @@ AUX 30-dbus 243 RMD160 b5e7a813cd5d91f2ea60bb22260e432cbfb72fd9 SHA1 35ee3a5d3db9c7e372603ce916e17a41edd01d36 SHA256 a8e8fec9769cc5d46df8216f7d1e1f9df422c4e46f293fd70d4b017fb01d959d AUX 80-dbus 341 RMD160 3b7f55906289d91a1f0ed87edec7902ddac076c5 SHA1 df1f96934fbe164dc4f4e2e4d4b4cdeaf8cef2b5 SHA256 76ce25ce8769cdfcb0d7b7e52e5a7e6474448fc34e8ad9393afac1eca1e07fd2 -AUX dbus-1.2.24-thread-safety.patch 14117 RMD160 5333f686b14ac911bca8d4ade056d3afb7987421 SHA1 e69219e91516ca9d61cb6b88e9c84429839d79bb SHA256 dad08d5821a14ab7a40443045525cf3ef9a417b9195711956d563d843d0847b4 AUX dbus-1.4.0-asneeded.patch 4157 RMD160 f6fd613ff90d5570f4dabeca0738df4c3249ed49 SHA1 ceddf63bb4a3213f68117b36af415a7c69443e6a SHA256 c37d068b6923947f769682677cacbad13b267458b2de242e160b8ab261aa9b96 AUX dbus.init-1.0 1152 RMD160 f0f409b59167beef2e2b8c14f701fbeaa54c3bc9 SHA1 b00e23868046c67eaec87220e92ffcea5d9dd911 SHA256 a2e13a025faa488ff35521188c0d44909bc82c55e8676a24a5a5179545303d98 DIST dbus-1.2.24.tar.gz 1673774 RMD160 2f51def784056bc16fbec2ddc3be22c022a94fb5 SHA1 9593717348ea36ba228b46f165bb67c127c12be8 SHA256 f12c748f4a703655e3d4c3db94cdf5a752a0cd0b36958c715804373bd3595c48 DIST dbus-1.4.0.tar.gz 1800347 RMD160 e3d44208f39d7c4a1bf916527dc121d3097a82d0 SHA1 4be3281005a9ef8f521f5547128c29a2632cb1d7 SHA256 c96d2f86d40e158e2bf405925a0a42cce0533a8466098e2f2238aa1614926652 -EBUILD dbus-1.2.24-r1.ebuild 3707 RMD160 811ff2f77ab26cf12cb3aabfbf4ff5caba283bf1 SHA1 66e8910d474d93523c4b43ca490ef62b5dece465 SHA256 b790060d03e5855ff3bdb2551de82859418e0a43be05098238a138715f515a73 -EBUILD dbus-1.2.24-r2.ebuild 4675 RMD160 3878f1edd150a5faebb5cd11424b6475e40f973b SHA1 aa23bc36f4aadb49a09e40e43586dc98d2373029 SHA256 6219b5c8e9ec336c3f6558945a7e4f789509f8f171c1b085b1de3aac83c1b5ad EBUILD dbus-1.2.24.ebuild 3679 RMD160 5d4063a79bddee8c3963d68487862bf3638acf0d SHA1 26f2043c6a5d92a567fc92b8dfcba1e6eeee7d09 SHA256 897662b0d33783ef5876b3db04739964d2425f5d24d6242f8ad9ab1680b421bc EBUILD dbus-1.4.0.ebuild 5111 RMD160 03aa2d02e41a5173f5780815c038f09fec133015 SHA1 946470a558d5d4902987e8b43e88003c1334ed58 SHA256 93546a9afa1ac0e875c41342fa09a8f5a0d40d1f0085fbd6578fc258fcc3fe00 MISC ChangeLog 40844 RMD160 c9beb7f44f1876e056d3c5706b3d88fb2b233876 SHA1 06a5ae9f20dc683e823948c0f2ecb3fe6d632499 SHA256 d8a806f2d5b79eabbdadbf6e2dc2a04386acc2b30b11b58f264c50ab6d1ed9f8 diff --git a/sys-apps/dbus/dbus-1.2.24-r1.ebuild b/sys-apps/dbus/dbus-1.2.24-r1.ebuild deleted file mode 100644 index 9919debec766..000000000000 --- a/sys-apps/dbus/dbus-1.2.24-r1.ebuild +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright 1999-2010 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-apps/dbus/dbus-1.2.24-r1.ebuild,v 1.1 2010/08/05 19:54:03 lack Exp $ - -EAPI=2 - -inherit eutils multilib flag-o-matic - -DESCRIPTION="A message bus system, a simple way for applications to talk to each other" -HOMEPAGE="http://dbus.freedesktop.org/" -SRC_URI="http://dbus.freedesktop.org/releases/dbus/${P}.tar.gz" - -LICENSE="|| ( GPL-2 AFL-2.1 )" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" -IUSE="debug doc selinux test X" - -RDEPEND="X? ( x11-libs/libXt x11-libs/libX11 ) - selinux? ( sys-libs/libselinux - sec-policy/selinux-dbus ) - >=dev-libs/expat-1.95.8 - !mutex); \ - } while (0) - -+#define SLOTS_LOCK(connection) do { \ -+ _dbus_mutex_lock ((connection)->slot_mutex); \ -+ } while (0) -+ -+#define SLOTS_UNLOCK(connection) do { \ -+ _dbus_mutex_unlock ((connection)->slot_mutex); \ -+ } while (0) -+ - #define DISPATCH_STATUS_NAME(s) \ - ((s) == DBUS_DISPATCH_COMPLETE ? "complete" : \ - (s) == DBUS_DISPATCH_DATA_REMAINS ? "data remains" : \ -@@ -257,6 +265,7 @@ - - DBusList *filter_list; /**< List of filters. */ - -+ DBusMutex *slot_mutex; /**< Lock on slot_list so overall connection lock need not be taken */ - DBusDataSlotList slot_list; /**< Data stored by allocated integer ID */ - - DBusHashTable *pending_replies; /**< Hash of message serials to #DBusPendingCall. */ -@@ -647,39 +656,42 @@ - DBusWatchToggleFunction toggle_function, - dbus_bool_t enabled) - { -- DBusWatchList *watches; - dbus_bool_t retval; -- -+ - HAVE_LOCK_CHECK (connection); - -- /* This isn't really safe or reasonable; a better pattern is the "do everything, then -- * drop lock and call out" one; but it has to be propagated up through all callers -+ /* The original purpose of protected_change_watch() was to hold a -+ * ref on the connection while dropping the connection lock, then -+ * calling out to the app. This was a broken hack that did not -+ * work, since the connection was in a hosed state (no WatchList -+ * field) while calling out. -+ * -+ * So for now we'll just keep the lock while calling out. This means -+ * apps are not allowed to call DBusConnection methods inside a -+ * watch function or they will deadlock. -+ * -+ * The "real fix" is to use the _and_unlock() pattern found -+ * elsewhere in the code, to defer calling out to the app until -+ * we're about to drop locks and return flow of control to the app -+ * anyway. -+ * -+ * See http://lists.freedesktop.org/archives/dbus/2007-July/thread.html#8144 - */ -- -- watches = connection->watches; -- if (watches) -- { -- connection->watches = NULL; -- _dbus_connection_ref_unlocked (connection); -- CONNECTION_UNLOCK (connection); - -+ if (connection->watches) -+ { - if (add_function) -- retval = (* add_function) (watches, watch); -+ retval = (* add_function) (connection->watches, watch); - else if (remove_function) - { - retval = TRUE; -- (* remove_function) (watches, watch); -+ (* remove_function) (connection->watches, watch); - } - else - { - retval = TRUE; -- (* toggle_function) (watches, watch, enabled); -+ (* toggle_function) (connection->watches, watch, enabled); - } -- -- CONNECTION_LOCK (connection); -- connection->watches = watches; -- _dbus_connection_unref_unlocked (connection); -- - return retval; - } - else -@@ -768,39 +780,42 @@ - DBusTimeoutToggleFunction toggle_function, - dbus_bool_t enabled) - { -- DBusTimeoutList *timeouts; - dbus_bool_t retval; -- -+ - HAVE_LOCK_CHECK (connection); - -- /* This isn't really safe or reasonable; a better pattern is the "do everything, then -- * drop lock and call out" one; but it has to be propagated up through all callers -+ /* The original purpose of protected_change_timeout() was to hold a -+ * ref on the connection while dropping the connection lock, then -+ * calling out to the app. This was a broken hack that did not -+ * work, since the connection was in a hosed state (no TimeoutList -+ * field) while calling out. -+ * -+ * So for now we'll just keep the lock while calling out. This means -+ * apps are not allowed to call DBusConnection methods inside a -+ * timeout function or they will deadlock. -+ * -+ * The "real fix" is to use the _and_unlock() pattern found -+ * elsewhere in the code, to defer calling out to the app until -+ * we're about to drop locks and return flow of control to the app -+ * anyway. -+ * -+ * See http://lists.freedesktop.org/archives/dbus/2007-July/thread.html#8144 - */ -- -- timeouts = connection->timeouts; -- if (timeouts) -- { -- connection->timeouts = NULL; -- _dbus_connection_ref_unlocked (connection); -- CONNECTION_UNLOCK (connection); - -+ if (connection->timeouts) -+ { - if (add_function) -- retval = (* add_function) (timeouts, timeout); -+ retval = (* add_function) (connection->timeouts, timeout); - else if (remove_function) - { - retval = TRUE; -- (* remove_function) (timeouts, timeout); -+ (* remove_function) (connection->timeouts, timeout); - } - else - { - retval = TRUE; -- (* toggle_function) (timeouts, timeout, enabled); -+ (* toggle_function) (connection->timeouts, timeout, enabled); - } -- -- CONNECTION_LOCK (connection); -- connection->timeouts = timeouts; -- _dbus_connection_unref_unlocked (connection); -- - return retval; - } - else -@@ -1239,6 +1254,10 @@ - if (connection->io_path_cond == NULL) - goto error; - -+ _dbus_mutex_new_at_location (&connection->slot_mutex); -+ if (connection->slot_mutex == NULL) -+ goto error; -+ - disconnect_message = dbus_message_new_signal (DBUS_PATH_LOCAL, - DBUS_INTERFACE_LOCAL, - "Disconnected"); -@@ -1315,6 +1334,7 @@ - _dbus_mutex_free_at_location (&connection->mutex); - _dbus_mutex_free_at_location (&connection->io_path_mutex); - _dbus_mutex_free_at_location (&connection->dispatch_mutex); -+ _dbus_mutex_free_at_location (&connection->slot_mutex); - dbus_free (connection); - } - if (pending_replies) -@@ -2558,9 +2578,14 @@ - - /* The connection lock is better than the global - * lock in the atomic increment fallback -+ * -+ * (FIXME but for now we always use the atomic version, -+ * to avoid taking the connection lock, due to -+ * the mess with set_timeout_functions()/set_watch_functions() -+ * calling out to the app without dropping locks) - */ - --#ifdef DBUS_HAVE_ATOMIC_INT -+#if 1 - _dbus_atomic_inc (&connection->refcount); - #else - CONNECTION_LOCK (connection); -@@ -2672,6 +2697,8 @@ - _dbus_mutex_free_at_location (&connection->io_path_mutex); - _dbus_mutex_free_at_location (&connection->dispatch_mutex); - -+ _dbus_mutex_free_at_location (&connection->slot_mutex); -+ - _dbus_mutex_free_at_location (&connection->mutex); - - dbus_free (connection); -@@ -2706,9 +2733,14 @@ - - /* The connection lock is better than the global - * lock in the atomic increment fallback -+ * -+ * (FIXME but for now we always use the atomic version, -+ * to avoid taking the connection lock, due to -+ * the mess with set_timeout_functions()/set_watch_functions() -+ * calling out to the app without dropping locks) - */ - --#ifdef DBUS_HAVE_ATOMIC_INT -+#if 1 - last_unref = (_dbus_atomic_dec (&connection->refcount) == 1); - #else - CONNECTION_LOCK (connection); -@@ -4652,9 +4684,11 @@ - * should be that dbus_connection_set_watch_functions() has no effect, - * but the add_function and remove_function may have been called. - * -- * @todo We need to drop the lock when we call the -- * add/remove/toggled functions which can be a side effect -- * of setting the watch functions. -+ * @note The thread lock on DBusConnection is held while -+ * watch functions are invoked, so inside these functions you -+ * may not invoke any methods on DBusConnection or it will deadlock. -+ * See the comments in the code or http://lists.freedesktop.org/archives/dbus/2007-July/tread.html#8144 -+ * if you encounter this issue and want to attempt writing a patch. - * - * @param connection the connection. - * @param add_function function to begin monitoring a new descriptor. -@@ -4673,42 +4707,17 @@ - DBusFreeFunction free_data_function) - { - dbus_bool_t retval; -- DBusWatchList *watches; - - _dbus_return_val_if_fail (connection != NULL, FALSE); - - CONNECTION_LOCK (connection); - --#ifndef DBUS_DISABLE_CHECKS -- if (connection->watches == NULL) -- { -- _dbus_warn_check_failed ("Re-entrant call to %s is not allowed\n", -- _DBUS_FUNCTION_NAME); -- return FALSE; -- } --#endif -- -- /* ref connection for slightly better reentrancy */ -- _dbus_connection_ref_unlocked (connection); -- -- /* This can call back into user code, and we need to drop the -- * connection lock when it does. This is kind of a lame -- * way to do it. -- */ -- watches = connection->watches; -- connection->watches = NULL; -- CONNECTION_UNLOCK (connection); -- -- retval = _dbus_watch_list_set_functions (watches, -+ retval = _dbus_watch_list_set_functions (connection->watches, - add_function, remove_function, - toggled_function, - data, free_data_function); -- CONNECTION_LOCK (connection); -- connection->watches = watches; -- -+ - CONNECTION_UNLOCK (connection); -- /* drop our paranoid refcount */ -- dbus_connection_unref (connection); - - return retval; - } -@@ -4738,6 +4747,12 @@ - * given remove_function. The timer interval may change whenever the - * timeout is added, removed, or toggled. - * -+ * @note The thread lock on DBusConnection is held while -+ * timeout functions are invoked, so inside these functions you -+ * may not invoke any methods on DBusConnection or it will deadlock. -+ * See the comments in the code or http://lists.freedesktop.org/archives/dbus/2007-July/thread.html#8144 -+ * if you encounter this issue and want to attempt writing a patch. -+ * - * @param connection the connection. - * @param add_function function to add a timeout. - * @param remove_function function to remove a timeout. -@@ -4755,38 +4770,17 @@ - DBusFreeFunction free_data_function) - { - dbus_bool_t retval; -- DBusTimeoutList *timeouts; - - _dbus_return_val_if_fail (connection != NULL, FALSE); - - CONNECTION_LOCK (connection); - --#ifndef DBUS_DISABLE_CHECKS -- if (connection->timeouts == NULL) -- { -- _dbus_warn_check_failed ("Re-entrant call to %s is not allowed\n", -- _DBUS_FUNCTION_NAME); -- return FALSE; -- } --#endif -- -- /* ref connection for slightly better reentrancy */ -- _dbus_connection_ref_unlocked (connection); -- -- timeouts = connection->timeouts; -- connection->timeouts = NULL; -- CONNECTION_UNLOCK (connection); -- -- retval = _dbus_timeout_list_set_functions (timeouts, -+ retval = _dbus_timeout_list_set_functions (connection->timeouts, - add_function, remove_function, - toggled_function, - data, free_data_function); -- CONNECTION_LOCK (connection); -- connection->timeouts = timeouts; -- -+ - CONNECTION_UNLOCK (connection); -- /* drop our paranoid refcount */ -- dbus_connection_unref (connection); - - return retval; - } -@@ -5749,6 +5743,15 @@ - * the connection is finalized. The slot number - * must have been allocated with dbus_connection_allocate_data_slot(). - * -+ * @note This function does not take the -+ * main thread lock on DBusConnection, which allows it to be -+ * used from inside watch and timeout functions. (See the -+ * note in docs for dbus_connection_set_watch_functions().) -+ * A side effect of this is that you need to know there's -+ * a reference held on the connection while invoking -+ * dbus_connection_set_data(), or the connection could be -+ * finalized during dbus_connection_set_data(). -+ * - * @param connection the connection - * @param slot the slot number - * @param data the data to store -@@ -5768,14 +5771,14 @@ - _dbus_return_val_if_fail (connection != NULL, FALSE); - _dbus_return_val_if_fail (slot >= 0, FALSE); - -- CONNECTION_LOCK (connection); -+ SLOTS_LOCK (connection); - - retval = _dbus_data_slot_list_set (&slot_allocator, - &connection->slot_list, - slot, data, free_data_func, - &old_free_func, &old_data); - -- CONNECTION_UNLOCK (connection); -+ SLOTS_UNLOCK (connection); - - if (retval) - { -@@ -5791,6 +5794,15 @@ - * Retrieves data previously set with dbus_connection_set_data(). - * The slot must still be allocated (must not have been freed). - * -+ * @note This function does not take the -+ * main thread lock on DBusConnection, which allows it to be -+ * used from inside watch and timeout functions. (See the -+ * note in docs for dbus_connection_set_watch_functions().) -+ * A side effect of this is that you need to know there's -+ * a reference held on the connection while invoking -+ * dbus_connection_get_data(), or the connection could be -+ * finalized during dbus_connection_get_data(). -+ * - * @param connection the connection - * @param slot the slot to get data from - * @returns the data, or #NULL if not found -@@ -5803,13 +5815,13 @@ - - _dbus_return_val_if_fail (connection != NULL, NULL); - -- CONNECTION_LOCK (connection); -+ SLOTS_LOCK (connection); - - res = _dbus_data_slot_list_get (&slot_allocator, - &connection->slot_list, - slot); - -- CONNECTION_UNLOCK (connection); -+ SLOTS_UNLOCK (connection); - - return res; - } -- cgit v1.2.3-65-gdbad