dbus-deviation: Error codes

A list of all the possible error codes produced by dbus-deviation, along with potential causes, what problems result, and how to avoid them.

Interface parser errors

Error code Compatibility Description
argument-type error The type of an argument to a method or signal was not a valid D-Bus type. Check the D-Bus type system.
duplicate-interface error Two D-Bus interfaces with the same name were defined in a single API file. One of the interfaces may be misnamed.
duplicate-method error Two methods with the same name were defined in a single D-Bus interface. One of the methods may be misnamed.
duplicate-node error Two nodes with the same name were defined in a single D-Bus interface. One of the nodes may be misnamed.
duplicate-property error Two properties with the same name were defined in a single D-Bus interface. One of the properties may be misnamed.
duplicate-signal error Two signals with the same name were defined in a single D-Bus interface. One of the signals may be misnamed.
interface-name error The name of a D-Bus interface was not valid. Check the D-Bus interface name documentation.
method-name error The name of a D-Bus method was not valid. Check the D-Bus member name documentation.
missing-attribute error An XML node in the API file was missing a required attribute. Typically, a ‘name’ attribute is required — check the Introspection Data Format specification.
node-name error The path (name) of a D-Bus node was not a valid relative path. The root node must have an absolute object path (if one is specified); child nodes must have relative object paths (if specified). Check the D-Bus object path documentation.
property-type error The type of a D-Bus property was not a valid D-Bus type. Check the D-Bus type system.
signal-name error The name of a D-Bus signal was not valid. Check the D-Bus member name documentation.
unknown-node error An XML node in the API file was not recognized. Check the Introspection Data Format specification.

Type parser errors

Error code Compatibility Description
invalid-type error A D-Bus type string is invalid, or represents an illegal D-Bus type. Check the D-Bus type system documentation.
reserved-type error A D-Bus type string contains a reserved type character, such as m, *, ?, @, & or ^. These are not allowed in interface definitions; they’re reserved for binding implementations or future features. Check the D-Bus type system documentation.
unknown-type error A D-Bus type string contains an unknown character which is not part of the language of D-Bus type strings. Check the D-Bus type system documentation.

Comparator errors

Error code Compatibility Description
argument-added backwards-incompatible A new argument was added to a method or signal. This is backwards incompatible as all existing call sites and signal handlers need to be changed to handle it.
argument-direction-changed-*-* backwards-incompatible An argument’s direction was changed from ‘in’ to ‘out’ or vice-versa. This is backwards incompatible as all existing call sites and signal handlers need to be changed to write the argument when they would have previously read it, or vice-versa.
argument-name-changed info An argument changed name. This is not an API break, as arguments are looked up by index. Note that it is an API break if two arguments have swapped places though. You should check that the name change is not accompanied by a change in the semantics of the argument.
argument-removed backwards-incompatible An argument was removed from a method or signal. This is backwards incompatible as all existing call sites and signal handlers need to be changed to stop using it.
argument-type-changed backwards-incompatible An argument changed type. This is backwards incompatible as all existing call sites and signal handlers need to be changed to use the new type. This might have been caused by another argument being added or removed; so check other error messages too.
c-symbol-changed info The C symbol corresponding to a D-Bus API changed name. This does not affect stability of the D-Bus API, but may change the API of any generated C bindings. You should check whether that is the case.
deprecated info A D-Bus API has been marked as deprecated using the org.freedesktop.DBus.Deprecated annotation. The API can still be used, but you might want to port applications away from using it, to use the documented replacement instead.
ecs-changed-true-false, ecs-changed-true-const, ecs-changed-invalidates-false, ecs-changed-invalidates-const forwards-incompatible A D-Bus property which previously emitted the org.freedesktop.DBus.Properties.PropertiesChanged signal when its value changed will no longer emit that signal. It either now has a constant value (for the lifetime of the D-Bus object containing the property), or simply is no longer guaranteed to emit the signal when its value changes. Applications which previously handled notifications for this property will no longer receive them, but will otherwise continue to function.
ecs-changed-false-true, ecs-changed-false-invalidates, ecs-changed-const-true, ecs-changed-const-invalidates backwards-incompatible A D-Bus property which previously did not emit the org.freedesktop.DBus.Properties.PropertiesChanged signal will now emit that signal when its value changes. The signal may contain the updated value of the property, or may simply mark the property as ‘invalidated’. Applications which previously assumed the property had a constant value should be changed to handle notifications for it.
ecs-changed-true-invalidates backwards-incompatible A D-Bus property which previously emitted its updated value in the org.freedesktop.DBus.Properties.PropertiesChanged signal when its value changed will no longer include the updated value, and will instead notify the property as ‘invalidated’. Applications which expected the property to be listed in the changed_properties argument of the org.freedesktop.DBus.Properties.PropertiesChanged signal should be changed to look in the invalidated_properties argument — or to look in both, for maximum compatibility.
ecs-changed-invalidates-true backwards-incompatible A D-Bus property which previously did not emit its updated value in the org.freedesktop.DBus.Properties.PropertiesChanged signal when its value changed will now include the updated value, and will no longer notify the property as ‘invalidated’. Applications which expected the property to be listed in the invalidated_properties argument of the org.freedesktop.DBus.Properties.PropertiesChanged signal should be changed to look in the changed_properties argument — or to look in both, for maximum compatibility.
ecs-changed-const-false backwards-incompatible A D-Bus property which was previously marked as constant, with a value which did not change throughout the lifetime of the containing D-Bus object, is now marked as non-constant. Its value may now change; however, such changes will not be notified using the org.freedesktop.DBus.Properties.PropertiesChanged signal. Applications should be changed to re-query the property when appropriate, and to no longer assume that its value is constant.
ecs-changed-false-const forwards-incompatible A D-Bus property which was previously marked as non-constant, is now marked as constant, with a value which cannot change throughout the lifetime of the containing D-Bus object. The property will continue to not be notified through the org.freedesktop.DBus.Properties.PropertiesChanged signal. Applications may be changed to assume the property’s value is constant, and hence no longer need to re-query its value after the initial query.
interface-added forwards-incompatible A new D-Bus interface was added to the API, and can now be used in applications. You must bump your application’s dependency on the D-Bus API version, or check that the new interface is implemented at runtime before using it, otherwise your application will not run correctly against older versions of the D-Bus service.
interface-removed backwards-incompatible A D-Bus interface was removed from the API, and can no longer be used in applications. This is a backwards-incompatible change, and all applications which were using that interface must be ported away from it, or have runtime version checks added so they only use the interface when the D-Bus service implements it at runtime.
method-added forwards-incompatible A new method was added to a D-Bus interface in the API, and can now be used in applications. You must bump your application’s dependency on the D-Bus API version, or check that the new method is available at runtime before using it, otherwise your application will not run correctly against older versions of the D-Bus service.
method-removed backwards-incompatible A method was removed from a D-Bus interface in the API, and can no longer be used in applications. This is a backwards-incompatible change, and all applications which were using that method must be ported away from it, or have runtime version checks added so they only use the method when the D-Bus service implements it at runtime.
property-access-changed-read-readwrite, property-access-changed-write-readwrite forwards-incompatible A property changed access flags from ‘read’ or ‘write’ to ‘readwrite’, making it less restrictive. Applications may now get and set the property, which was not possible before. This is a forwards-incompatible change, so any applications which start using the lessened restrictions should gracefully handle failure to use them, so that they continue to work with older versions of the D-Bus service.
property-access-changed-read-write, property-access-changed-write-read, property-access-changed-readwrite-read, property-access-changed-readwrite-write backwards-incompatible A property changed access flags to be more restrictive. This is a backwards incompatible change, and applications will need to be changed to stop accessing the property how they were before, or to gracefully handle failure of set or get calls on the property.
property-added forwards-incompatible A new property was added to a D-Bus interface in the API, and can now be used in applications. You must bump your application’s dependency on the D-Bus API version, or check that the new property is available at runtime before using it, otherwise your application will not run correctly against older versions of the D-Bus service.
property-removed backwards-incompatible A property was removed from a D-Bus interface in the API, and can no longer be used in applications. This is a backwards-incompatible change, and all applications which were using that property must be ported away from it, or have runtime version checks added so they only use the property when the D-Bus service implements it at runtime.
property-type-changed backwards-incompatible A property changed type. This is backwards incompatible as all existing set and get sites need to be changed to use the new type.
reply-added backwards-incompatible A D-Bus method which was previously marked as not returning a reply will now return a reply. All call sites using the method should be modified to asynchronously wait for a reply and handle any errors or return values it provides. This may be coupled with a change in the method’s type to add new ‘out’ arguments (argument-added), which should be handled as appropriate.
reply-removed backwards-incompatible A D-Bus method which was previously marked as returning a reply will now not return a reply. All call sites using the method should be modified to not wait for a reply, and any code which handles errors or return values can be removed. This may be coupled with a change in the method’s type to remove ‘out’ arguments (argument-removed), support for which should be removed as appropriate.
signal-added forwards-incompatible A new signal was added to a D-Bus interface in the API, and can now be connected to in applications. You must bump your application’s dependency on the D-Bus API version, or check that the new signal is available at runtime before connecting to it, otherwise your application will not run correctly against older versions of the D-Bus service.
signal-removed backwards-incompatible A signal was removed from a D-Bus interface in the API, and can no longer be used in applications. This is a backwards-incompatible change, and all applications which were connecting to that signal must be ported away from it, or have runtime version checks added so they only connect to the signal when the D-Bus service implements it at runtime.
undeprecated info A D-Bus API which was previously marked as deprecated using the org.freedesktop.DBus.Deprecated annotation is no longer marked as deprecated. You may start using it in applications again, although you should check whether the un-deprecation was intentional first.

Bugs and problems

If you have found a bug on this page, have found missing documentation, or if some of the documentation is unclear, please file a bug.