Commit graph

2989 commits

Author SHA1 Message Date
Lennart Poettering
7953ca2f81 Merge branch 'dbus-1.4' 2011-07-28 21:45:35 +02:00
Lennart Poettering
0614a49274 sysdeps-unix: remove some redundant assignments 2011-07-28 21:42:48 +02:00
Lennart Poettering
3e2519b49a Merge branch 'dbus-1.4' 2011-07-28 21:26:21 +02:00
Lennart Poettering
d837d937c5 activation: add /lib/dbus-1/system-services to the search path for services
In order to allow D-Bus usage during early boot (where /usr is not
accessible) also search for bus activation files in
/lib/dbus-1/system-services/. This is only a first step in the right
direction, before we really can boot without /usr we'd need to move all
current activation files (or possibly replace
/usr/dbus-1/system-services to a symlink to
/lib/dbus-1/system-services).
2011-07-28 21:22:07 +02:00
Simon McVittie
c1ad8a9ac9 _dbus_message_remove_counter: remove ability to return the link
Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:55 +01:00
Simon McVittie
63c93a1165 Add a regression test that can reproduce fd.o #34393
The number of messages is arbitrary; the more messages, the more likely
the crash is. 2000 messages seem to cause it reliably on this laptop,
but I've set it to 10000 to be safe.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:52 +01:00
Simon McVittie
4437ddb473 Remove the per-connection link cache
With fd.o#34393 fixed, retaking the lock to cache unused links
significantly adds to locking overhead (-18% throughput in a synthetic
benchmark on an ARM device). The cache is also unlimited in size, and
probably contributes to memory growth and fragmentation by not being
under the system malloc's control.

Fixing fd.o #34393, but also dropping this cache entirely, turns out to
lead to a 5% increase in throughput on the same synthetic benchmark.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:49 +01:00
Simon McVittie
aea47abba5 dbus_connection_dispatch: avoid freeing UnknownMethod reply until we unlock
Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:45 +01:00
Simon McVittie
e2c62e668b _dbus_connection_peer_filter_unlocked_no_update: delay freeing reply
Finalizing the reply could conceivably call callbacks, so wait til we
unlock.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:41 +01:00
Simon McVittie
8304d4a064 Don't finalize sent or dispatched messages while under the connection lock
Finalizing a message can trigger callbacks; that's bad, if we have a
connection locked.

In particular, if a message is received by the "left side", passed to
the "right side" and sent (as in test/relay.c (see the diagram there)
or in dbus-daemon), then finalizing that message could result in the
live messages counter for the left side, and the outgoing messages counter
for the right side, both being decremented while under either side's
lock.

After a message is dispatched on the left side, finalizing it now drops
the lock temporarily, to avoid this problem.

After a message is sent on the right side, finalizing it is now deferred
until the right side unlocks, by moving it to a new queue of
"expired messages" which is automatically cleared every time we release
the lock.

The "live messages" counter for the "left" connection will now explicitly
take the left connection's lock before decrementing, to avoid
manipulating watches without a lock.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:35 +01:00
Simon McVittie
acf4056a42 Don't inline the contents of _dbus_connection_unlock
It's about to become more complex, to handle delayed deallocation of
messages in order to avoid triggering callbacks while locked.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:31 +01:00
Simon McVittie
ab3984d327 When attaching counters to messages, don't automatically notify callbacks
In all the places where counters are added, we're under a lock. The caller
knows what effect adding the counter might have, and can replicate it
in a lock-safe way if necessary.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:27 +01:00
Simon McVittie
6310774e98 Comment some places where it's OK to unref a message despite holding locks
In general, dbus_message_unref should be avoided while holding locks,
because it can invoke arbitrary user callbacks (via attached data, or
via DBusCounter).

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:25 +01:00
Simon McVittie
0688924ed2 Add _dbus_counter_notify and call it after every adjustment
When fd-passing is implemented, adjustments happen in pairs; in that case
we coalesce the two calls into one.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:23 +01:00
Simon McVittie
429573e69a _dbus_connection_message_sent: rename to _unlocked
It's called with the connection's lock held.

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:23:21 +01:00
Simon McVittie
150f1c1862 dbus_bus_register: don't unref the messages with the lock held
Finalizing a message can call out to user code via dbus_message_set_data
(or to internal code not expecting locks to be held, via DBusCounter).

Reviewed-by: Colin Walters <walters@verbum.org>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34393
2011-07-28 18:22:17 +01:00
Simon McVittie
72ee30d43b Merge branch 'dbus-1.4' 2011-07-28 16:24:11 +01:00
Simon McVittie
736ddc7f01 Add a note about bootstrapping new platforms to README 2011-07-28 16:23:19 +01:00
Simon McVittie
23cb3ecad3 Upgrade the type system into its own top-level section of the spec
The type system can be used independently, for instance in GVariant
(although GVariant's binary encoding is in fact not the same).

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38252
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2011-07-28 12:18:50 +01:00
Simon McVittie
0d7318ccc7 Merge branch 'dbus-1.4' 2011-07-28 11:32:46 +01:00
Simon McVittie
4335a09280 man pages: replace all unescaped hyphen/minus characters with \-
In a man page, "-" officially means a typographical (Unicode) hyphen,
which frequently breaks the ability to copy and paste code examples from
a man page. "\-" means the ASCII hyphen/minus character. See
<http://lintian.debian.org/tags/hyphen-used-as-minus-sign.html> for
more details.

Rather than trying to distinguish between hyphens, em-dashes and
hyphen/minus, I just replaced all ambiguous hyphens with \- by applying
this vim command repeatedly until it didn't find anything:

     %s/\(^\|[^\\]\)-/\1\\-/g

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38284
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2011-07-28 11:06:10 +01:00
Simon McVittie
638828526a Fix spelling/grammatical mistakes detected by Debian's lintian(1)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38284
Reviewed-by: Lennart Poettering <lennart@poettering.net>
2011-07-28 11:05:43 +01:00
Simon McVittie
2121ff07d5 Merge branch 'dbus-1.4' 2011-07-27 18:54:35 +01:00
Sascha Silbe
2c776890bf list_allows_user: fix debug output for groups
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
2011-07-27 18:51:03 +01:00
Simon McVittie
6ca26b7700 Merge branch 'dbus-1.4'
Conflicts:
	dbus/dbus-message.c
2011-07-26 18:00:57 +01:00
Simon McVittie
104dc9383c NEWS 2011-07-26 17:59:23 +01:00
Simon McVittie
438595294c DBusMessage: always access refcount atomically, even for assertions/initial ref
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-26 17:42:16 +01:00
Simon McVittie
ef0f6ec935 dbus-memory: use atomic accesses to block count, even for assertions
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-26 17:41:38 +01:00
Simon McVittie
0a6e7cb982 Merge branch 'dbus-1.4' 2011-07-26 11:51:13 +01:00
Simon McVittie
b0f3874970 NEWS 2011-07-26 11:51:04 +01:00
Simon McVittie
a725cca0ac DBusConnection: use atomic accesses to refcount in assertions/initial ref
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:17:21 +01:00
Simon McVittie
dc6ae73598 dbus_message_ref: avoid unused variable if not asserting
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:17:12 +01:00
Simon McVittie
6f4aa18ec3 _dbus_connection_close_if_only_one_ref: use _dbus_atomic_get
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:16:51 +01:00
Simon McVittie
b997bf4ee2 Add _dbus_atomic_get implemented in terms of inc, dec
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:15:34 +01:00
Simon McVittie
c62b886119 DBusObjectTree: always access refcount atomically
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:10:02 +01:00
Simon McVittie
d70ba60027 dbus_message_unref: make an assertion more strict
We've just decremented the refcount, so it should have been at least 1
before we did that.

Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:09:29 +01:00
Simon McVittie
0ae863ef16 DBusMessageFilter: exclusively use atomic accesses to refcount
Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38005
2011-07-25 18:08:17 +01:00
Simon McVittie
feb31a3321 Merge branch 'dbus-1.4' and update NEWS for master
Conflicts:
	NEWS
2011-07-18 19:42:35 +01:00
Simon McVittie
006dbd48fa NEWS 2011-07-18 19:33:00 +01:00
Simon McVittie
693e2fc463 Uninstall the installed docs
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:24:52 +01:00
Simon McVittie
39b6b898c5 Install man2html output to $(htmldir)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:24:47 +01:00
Simon McVittie
14dab0789e Install diagram.*, system-activation.txt to the $(docdir)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:24:23 +01:00
Simon McVittie
53af0b903c Install xmlto output to $(htmldir) automatically
Also rename HTML_FILES to XMLTO_OUTPUT, as a more self-describing name:
we have other HTML files which are not the output from xmlto.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:24:15 +01:00
Simon McVittie
37cb1522fe Install dbus.devhelp to $(htmldir), not $(apidir), and remove it in clean
It needs to be in $(htmldir) so that its relative paths will work.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:23:45 +01:00
Simon McVittie
b9f38fd024 configure.ac: fix check for xsltproc
Pre-setting XSLTPROC interferes with AC_CHECK_PROGS letting the user
override choice of program via the environment.

Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36156
2011-07-18 19:23:24 +01:00
Simon McVittie
d54ea8a41b Use EXEEXT when running tests from another directory, and skip bus-test-launch-helper on non-Unix
This is necessary when cross-compiling from Linux to mingw32 and running
the resulting tests under Wine. (This partially works! Some tests fail,
though.)

Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:14:59 +01:00
Simon McVittie
a45df5f10a Build docs after running tests, and remove redundant DIST_SUBDIRS
If DIST_SUBDIRS isn't set, it defaults to SUBDIRS, so it's just noise.

Running tests before building documentation is an easy way to speed up the
hack/make check/fix cycle, by not wasting time rebuilding the
documentation (which is often slow) until all the tests compile and pass.

https://bugs.freedesktop.org/show_bug.cgi?id=34405
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:14:57 +01:00
Simon McVittie
b354cfc84a Run bus tests from test/
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34405
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:14:55 +01:00
Simon McVittie
e07a8f8e44 Run dbus-test from test/, not dbus/
This avoids failures caused by test/data not having been set up yet.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34405
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:14:54 +01:00
Simon McVittie
68b17dbb4c dbus tests: don't warn on skipped tests
We should treat _dbus_warn as fatal when we run tests, like bus/ does.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34405
Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
2011-07-18 19:14:52 +01:00