Hello community, here is the log from the commit of package dbus-1 checked in at Thu Jun 22 18:14:52 CEST 2006. -------- dbus-1-qt.changes: same change dbus-1-qt3.changes: same change --- dbus-1/dbus-1.changes 2006-06-20 12:21:34.000000000 +0200 +++ dbus-1/dbus-1.changes 2006-06-22 13:59:39.000000000 +0200 @@ -1,0 +2,7 @@ +Thu Jun 22 12:48:43 CEST 2006 - thoenig@suse.de + +- fix build: add freetype2-devel and libpng-devel to dbus-1-qt.spec +- add patch: dbus-pending-reply-revert.diff to avoid crashes of + multi-threaded applications using libdbus-1. + +------------------------------------------------------------------- New: ---- dbus-pending-reply-revert.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dbus-1-mono.spec ++++++ --- /var/tmp/diff_new_pack.9ikKGp/_old 2006-06-22 18:13:11.000000000 +0200 +++ /var/tmp/diff_new_pack.9ikKGp/_new 2006-06-22 18:13:11.000000000 +0200 @@ -20,13 +20,12 @@ License: Other uncritical OpenSource License, Other License(s), see package Group: Development/Libraries/Other Version: 0.62 -Release: 2 +Release: 3 Autoreqprov: on Summary: Mono Bindings for D-BUS Source0: dbus-%{version}.tar.gz Source1: rc.boot.dbus Source2: dbus-1.desktop -# Please sync the patches with the other spec file! Patch0: dbus-gcj_fixes.diff Patch1: dbus-enable_fill_api_doc.diff Patch2: dbus-tools_autobuild.diff @@ -38,6 +37,7 @@ Patch8: dbus-glib-nameownerchange-workaround.diff Patch9: dbus-mono-exit-on-disconnect.diff Patch10: dbus-qt-bindings_fix.diff +Patch11: dbus-pending-reply-revert.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # COMMON-END1 Requires: dbus-1 = %( echo `rpm -q --queryformat '%{VERSION}-%{RELEASE}' dbus-1`) @@ -229,6 +229,7 @@ %patch8 %patch9 %patch10 +%patch11 -R autoreconf -fi # COMMON-END2 ++++++ dbus-1-qt.spec ++++++ --- /var/tmp/diff_new_pack.9ikKGp/_old 2006-06-22 18:13:11.000000000 +0200 +++ /var/tmp/diff_new_pack.9ikKGp/_new 2006-06-22 18:13:11.000000000 +0200 @@ -11,7 +11,7 @@ # norootforbuild Name: dbus-1-qt -BuildRequires: dbus-1 qt-devel +BuildRequires: dbus-1 freetype2-devel libpng-devel qt-devel # COMMON-BEGIN1 # taken von dbus-1.spec till COMMON-END BuildRequires: glib2-devel libxml2-devel @@ -19,13 +19,12 @@ License: Other License(s), see package, Other uncritical OpenSource License Group: Development/Libraries/KDE Version: 0.62 -Release: 2 +Release: 3 Autoreqprov: on Summary: QT4/KDE bindings for D-BUS Source0: dbus-%{version}.tar.gz Source1: rc.boot.dbus Source2: dbus-1.desktop -# Please sync the patches with the other spec file! Patch0: dbus-gcj_fixes.diff Patch1: dbus-enable_fill_api_doc.diff Patch2: dbus-tools_autobuild.diff @@ -37,6 +36,7 @@ Patch8: dbus-glib-nameownerchange-workaround.diff Patch9: dbus-mono-exit-on-disconnect.diff Patch10: dbus-qt-bindings_fix.diff +Patch11: dbus-pending-reply-revert.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # COMMON-END1 Requires: dbus-1 = %( echo `rpm -q --queryformat '%{VERSION}-%{RELEASE}' dbus-1`) @@ -141,6 +141,7 @@ %patch8 %patch9 %patch10 +%patch11 -R autoreconf -fi # COMMON-END2 ++++++ dbus-1-qt3.spec ++++++ --- /var/tmp/diff_new_pack.9ikKGp/_old 2006-06-22 18:13:11.000000000 +0200 +++ /var/tmp/diff_new_pack.9ikKGp/_new 2006-06-22 18:13:11.000000000 +0200 @@ -19,13 +19,12 @@ License: Other License(s), see package, Other uncritical OpenSource License Group: Development/Libraries/KDE Version: 0.62 -Release: 2 +Release: 3 Autoreqprov: on Summary: QT3/KDE bindings for D-BUS Source0: dbus-%{version}.tar.gz Source1: rc.boot.dbus Source2: dbus-1.desktop -# Please sync the patches with the other spec file! Patch0: dbus-gcj_fixes.diff Patch1: dbus-enable_fill_api_doc.diff Patch2: dbus-tools_autobuild.diff @@ -37,6 +36,7 @@ Patch8: dbus-glib-nameownerchange-workaround.diff Patch9: dbus-mono-exit-on-disconnect.diff Patch10: dbus-qt-bindings_fix.diff +Patch11: dbus-pending-reply-revert.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # COMMON-END1 Provides: dbus-1-qt:/usr/%_lib/libdbus-qt-1.so.1 @@ -134,6 +134,7 @@ %patch8 %patch9 %patch10 +%patch11 -R autoreconf -fi # COMMON-END2 ++++++ dbus-1.spec ++++++ --- /var/tmp/diff_new_pack.9ikKGp/_old 2006-06-22 18:13:11.000000000 +0200 +++ /var/tmp/diff_new_pack.9ikKGp/_new 2006-06-22 18:13:11.000000000 +0200 @@ -19,13 +19,12 @@ License: Other License(s), see package Group: System/Daemons Version: 0.62 -Release: 2 +Release: 3 Autoreqprov: on Summary: D-BUS Message Bus System Source0: dbus-%{version}.tar.gz Source1: rc.boot.dbus Source2: dbus-1.desktop -# Please sync the patches with the other spec file! Patch0: dbus-gcj_fixes.diff Patch1: dbus-enable_fill_api_doc.diff Patch2: dbus-tools_autobuild.diff @@ -37,6 +36,7 @@ Patch8: dbus-glib-nameownerchange-workaround.diff Patch9: dbus-mono-exit-on-disconnect.diff Patch10: dbus-qt-bindings_fix.diff +Patch11: dbus-pending-reply-revert.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # COMMON-END1 Prereq: /usr/sbin/groupadd /usr/sbin/useradd /sbin/insserv /etc/init.d/boot.localfs @@ -149,6 +149,7 @@ %patch8 %patch9 %patch10 +%patch11 -R autoreconf -fi # COMMON-END2 @@ -258,6 +259,10 @@ %{_mandir}/man1/dbus-monitor.1.gz %changelog -n dbus-1 +* Thu Jun 22 2006 - thoenig@suse.de +- fix build: add freetype2-devel and libpng-devel to dbus-1-qt.spec +- add patch: dbus-pending-reply-revert.diff to avoid crashes of + multi-threaded applications using libdbus-1. * Tue Jun 20 2006 - coolo@suse.de - split out -qt and -qt3 into their own spec files * Mon Jun 12 2006 - thoenig@suse.de ++++++ dbus-pending-reply-revert.diff ++++++ Index: dbus/dbus-connection.c =================================================================== RCS file: /cvs/dbus/dbus/dbus/dbus-connection.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -r1.115 -r1.116 --- dbus/dbus-connection.c 30 Nov 2005 20:30:02 -0000 1.115 +++ dbus/dbus-connection.c 2 Mar 2006 22:24:28 -0000 1.116 @@ -2533,6 +2533,36 @@ return NULL; } +static dbus_bool_t +check_for_reply_and_update_dispatch_unlocked (DBusPendingCall *pending) +{ + DBusMessage *reply; + DBusDispatchStatus status; + DBusConnection *connection; + + connection = pending->connection; + + reply = check_for_reply_unlocked (connection, pending->reply_serial); + if (reply != NULL) + { + _dbus_verbose ("%s checked for reply\n", _DBUS_FUNCTION_NAME); + + _dbus_verbose ("dbus_connection_send_with_reply_and_block(): got reply\n"); + + _dbus_pending_call_complete_and_unlock (pending, reply); + dbus_message_unref (reply); + + CONNECTION_LOCK (connection); + status = _dbus_connection_get_dispatch_status_unlocked (connection); + _dbus_connection_update_dispatch_status_and_unlock (connection, status); + dbus_pending_call_unref (pending); + + return TRUE; + } + + return FALSE; +} + /** * When a function that blocks has been called with a timeout, and we * run out of memory, the time to wait for memory is based on the @@ -2616,6 +2646,11 @@ start_tv_sec, start_tv_usec, end_tv_sec, end_tv_usec); + /* check to see if we already got the data off the socket */ + /* from another blocked pending call */ + if (check_for_reply_and_update_dispatch_unlocked (pending)) + return; + /* Now we wait... */ /* always block at least once as we know we don't have the reply yet */ _dbus_connection_do_iteration_unlocked (connection, @@ -2645,27 +2680,8 @@ } if (status == DBUS_DISPATCH_DATA_REMAINS) - { - DBusMessage *reply; - - reply = check_for_reply_unlocked (connection, client_serial); - if (reply != NULL) - { - _dbus_verbose ("%s checked for reply\n", _DBUS_FUNCTION_NAME); - - _dbus_verbose ("dbus_connection_send_with_reply_and_block(): got reply\n"); - - _dbus_pending_call_complete_and_unlock (pending, reply); - dbus_message_unref (reply); - - CONNECTION_LOCK (connection); - status = _dbus_connection_get_dispatch_status_unlocked (connection); - _dbus_connection_update_dispatch_status_and_unlock (connection, status); - dbus_pending_call_unref (pending); - - return; - } - } + if (check_for_reply_and_update_dispatch_unlocked (pending)) + return; _dbus_get_current_time (&tv_sec, &tv_usec); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit-help@opensuse.org