hypfvieh / dbus-java

Improved version of java DBus library provided by freedesktop.org (https://dbus.freedesktop.org/doc/dbus-java/)
https://hypfvieh.github.io/dbus-java/
MIT License
185 stars 73 forks source link

Emit meaningful error message instead of IndexOutOfBoundsException when demarshalling FileDescriptor without prerequisites satisfied #230

Closed Flowdalic closed 1 year ago

Flowdalic commented 1 year ago

Invoking logind Inhibit(), which returns a FileDescriptor causes the following exception to be thrown using dbus-java 4.3.0:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
        at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
        at java.base/java.util.Objects.checkIndex(Objects.java:361)
        at java.base/java.util.ArrayList.get(ArrayList.java:427)
        at org.freedesktop.dbus.messages.Message.extractOne(Message.java:1052)
        at org.freedesktop.dbus.messages.Message.extract(Message.java:1328)
        at org.freedesktop.dbus.messages.Message.extract(Message.java:1319)
        at org.freedesktop.dbus.messages.Message.extract(Message.java:1301)
        at org.freedesktop.dbus.messages.Message.getParameters(Message.java:1436)
        at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(RemoteInvocationHandler.java:210)
        at org.freedesktop.dbus.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:89)
        at jdk.proxy2/jdk.proxy2.$Proxy27.Inhibit(Unknown Source)
        at eu.geekplace.sandmann.Logind.$anonfun$4(Logind.scala:132)
hypfvieh commented 1 year ago

Sorry, this is by far not enough information to help in any way. Do you have the https://github.com/rm5248/dbus-java-nativefd in your classpath?

Can you reproduce this with a minimum example and provide the required code?

Flowdalic commented 1 year ago

Thanks for the fast reply.

Sorry, this is by far not enough information to help in any way.

Happy to add more information. I am currently looking into enabling the SLF4J trace output of dbus-java. But I have a log4j setup using log4j-slf4j-impl. Not sure yet how to enable the trace output with such a setup.

Do you have the https://github.com/rm5248/dbus-java-nativefd in your classpath?

No, but I have dbus-java-transport-native-unixsocket in classpath. Adding dbus-java-nativefd results in

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.validateTransportAddress(DBusConnectionBuilder.java:129)
    at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.forSystemBus(DBusConnectionBuilder.java:55)
    at eu.geekplace.sandmann.Sandmann$.main(Sandmann.scala:53)
    at eu.geekplace.sandmann.Sandmann.main(Sandmann.scala)
Caused by: org.freedesktop.dbus.exceptions.TransportRegistrationException: Found transport org.freedesktop.dbus.transport.jre.NativeTransportProvider and org.freedesktop.dbus.transport.jnr.JnrUnixSocketTransportProvider both providing transport for socket type UNIX, please only add one of them to classpath.
    at org.freedesktop.dbus.connections.transports.TransportBuilder.getTransportProvider(TransportBuilder.java:64)
    at org.freedesktop.dbus.connections.transports.TransportBuilder.<clinit>(TransportBuilder.java:35)
    ... 4 more

Can you reproduce this with a minimum example and provide the required code?

I'll see if I can get you a reproducer. Essentially, this is calling public FileDescriptor Inhibit(String what, String who, String why, String mode); of org.freedeskop.login1.Manager. (Some) other methods of this class work fine.

Flowdalic commented 1 year ago

Was able to get the trace output:

This is calling FileDescriptor Manager.Inhibit("sleep", "Sandmann", "Perform actions before sleep", "delay"), see man org.freedesktop.login(5) :

15:22:48 TRACE: Deserializing from [] to [void]  [main]
15:22:48 TRACE: Converting 0 from 'sleep' to class java.lang.String [main]
15:22:48 TRACE: Converting 1 from 'Sandmann' to class java.lang.String [main]
15:22:48 TRACE: Converting 2 from 'Perform actions before sleep' to class java.lang.String [main]
15:22:48 TRACE: Converting 3 from 'delay' to class java.lang.String [main]
15:22:48 DEBUG: Creating message with serial 4 [main]
15:22:48 DEBUG: Appending sig: yyyy data: 108, 1, 0, 1 [main]
15:22:48 TRACE: Appending item: 0 y 0 [main]
15:22:48 TRACE: 4 [main]
15:22:48 TRACE: Appending type: y value: 108 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 4 0 4 1 [main]
15:22:48 TRACE: Appending item: 1 y 1 [main]
15:22:48 TRACE: 4 [main]
15:22:48 TRACE: Appending type: y value: 1 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 3 1 4 1 [main]
15:22:48 TRACE: Appending item: 2 y 2 [main]
15:22:48 TRACE: 4 [main]
15:22:48 TRACE: Appending type: y value: 0 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 2 2 4 1 [main]
15:22:48 TRACE: Appending item: 3 y 3 [main]
15:22:48 TRACE: 4 [main]
15:22:48 TRACE: Appending type: y value: 1 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 1 3 4 1 [main]
15:22:48 DEBUG: Appending arguments with signature: ssss [main]
15:22:48 DEBUG: Appending sig: ua(yv) data: 4, [[1, [o, /org/freedesktop/login1]], [6, [s, org.freedesktop.login1]], [2, [s, org.freedesktop.login1.Manager]], [3, [s, Inhibit]], [8, [g, ssss]]] [main]
15:22:48 TRACE: Appending item: 0 u 0 [main]
15:22:48 TRACE: 8 [main]
15:22:48 TRACE: Appending type: u value: 4 [main]
15:22:48 TRACE: padding for u [main]
15:22:48 TRACE: 0 4 8 4 [main]
15:22:48 TRACE: Marshalled int 4 to 04 00 00 00  [main]
15:22:48 TRACE: Appending item: 1 a 1 [main]
15:22:48 TRACE: 12 [main]
15:22:48 TRACE: Appending type: a value: [[1, [o, /org/freedesktop/login1]], [6, [s, org.freedesktop.login1]], [2, [s, org.freedesktop.login1.Manager]], [3, [s, Inhibit]], [8, [g, ssss]]] [main]
15:22:48 TRACE: padding for a [main]
15:22:48 TRACE: 0 4 12 4 [main]
15:22:48 TRACE: Appending array: [[1, [o, /org/freedesktop/login1]], [6, [s, org.freedesktop.login1]], [2, [s, org.freedesktop.login1.Manager]], [3, [s, Inhibit]], [8, [g, ssss]]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 4 16 8 [main]
15:22:48 TRACE: Resizing 4 [main]
15:22:48 TRACE: 16 [main]
15:22:48 TRACE: Appending type: ( value: [1, [o, /org/freedesktop/login1]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 4 16 8 [main]
15:22:48 TRACE: 16 [main]
15:22:48 TRACE: Appending type: y value: 1 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 0 4 16 1 [main]
15:22:48 TRACE: 17 [main]
15:22:48 TRACE: Appending type: v value: [o, /org/freedesktop/login1] [main]
15:22:48 TRACE: padding for v [main]
15:22:48 TRACE: 0 4 17 1 [main]
15:22:48 TRACE: 17 [main]
15:22:48 TRACE: Appending type: g value: o [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 4 17 1 [main]
15:22:48 TRACE: 20 [main]
15:22:48 TRACE: Appending type: o value: /org/freedesktop/login1 [main]
15:22:48 TRACE: padding for o [main]
15:22:48 TRACE: 0 3 20 4 [main]
15:22:48 TRACE: Appending String of length 23 [main]
15:22:48 TRACE: Marshalled int 23 to 17 00 00 00  [main]
15:22:48 TRACE: 48 [main]
15:22:48 TRACE: Appending type: ( value: [6, [s, org.freedesktop.login1]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 3 48 8 [main]
15:22:48 TRACE: 48 [main]
15:22:48 TRACE: Appending type: y value: 6 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 0 3 48 1 [main]
15:22:48 TRACE: 49 [main]
15:22:48 TRACE: Appending type: v value: [s, org.freedesktop.login1] [main]
15:22:48 TRACE: padding for v [main]
15:22:48 TRACE: 0 3 49 1 [main]
15:22:48 TRACE: 49 [main]
15:22:48 TRACE: Appending type: g value: s [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 3 49 1 [main]
15:22:48 TRACE: 52 [main]
15:22:48 TRACE: Appending type: s value: org.freedesktop.login1 [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 3 52 4 [main]
15:22:48 TRACE: Appending String of length 22 [main]
15:22:48 TRACE: Marshalled int 22 to 16 00 00 00  [main]
15:22:48 TRACE: 79 [main]
15:22:48 TRACE: Appending type: ( value: [2, [s, org.freedesktop.login1.Manager]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 3 79 8 [main]
15:22:48 TRACE: 0 3 80 1 [main]
15:22:48 TRACE: 80 [main]
15:22:48 TRACE: Appending type: y value: 2 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 0 3 80 1 [main]
15:22:48 TRACE: 81 [main]
15:22:48 TRACE: Appending type: v value: [s, org.freedesktop.login1.Manager] [main]
15:22:48 TRACE: padding for v [main]
15:22:48 TRACE: 0 3 81 1 [main]
15:22:48 TRACE: 81 [main]
15:22:48 TRACE: Appending type: g value: s [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 3 81 1 [main]
15:22:48 TRACE: 84 [main]
15:22:48 TRACE: Appending type: s value: org.freedesktop.login1.Manager [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 3 84 4 [main]
15:22:48 TRACE: Appending String of length 30 [main]
15:22:48 TRACE: Marshalled int 30 to 1e 00 00 00  [main]
15:22:48 TRACE: 119 [main]
15:22:48 TRACE: Appending type: ( value: [3, [s, Inhibit]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 3 119 8 [main]
15:22:48 TRACE: 0 3 120 1 [main]
15:22:48 TRACE: 120 [main]
15:22:48 TRACE: Appending type: y value: 3 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 0 3 120 1 [main]
15:22:48 TRACE: 121 [main]
15:22:48 TRACE: Appending type: v value: [s, Inhibit] [main]
15:22:48 TRACE: padding for v [main]
15:22:48 TRACE: 0 3 121 1 [main]
15:22:48 TRACE: 121 [main]
15:22:48 TRACE: Appending type: g value: s [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 3 121 1 [main]
15:22:48 TRACE: 124 [main]
15:22:48 TRACE: Appending type: s value: Inhibit [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 3 124 4 [main]
15:22:48 TRACE: Appending String of length 7 [main]
15:22:48 TRACE: Marshalled int 7 to 07 00 00 00  [main]
15:22:48 TRACE: 136 [main]
15:22:48 TRACE: Appending type: ( value: [8, [g, ssss]] [main]
15:22:48 TRACE: padding for ( [main]
15:22:48 TRACE: 0 3 136 8 [main]
15:22:48 TRACE: 136 [main]
15:22:48 TRACE: Appending type: y value: 8 [main]
15:22:48 TRACE: padding for y [main]
15:22:48 TRACE: 0 3 136 1 [main]
15:22:48 TRACE: 137 [main]
15:22:48 TRACE: Appending type: v value: [g, ssss] [main]
15:22:48 TRACE: padding for v [main]
15:22:48 TRACE: 0 3 137 1 [main]
15:22:48 TRACE: 137 [main]
15:22:48 TRACE: Appending type: g value: g [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 3 137 1 [main]
15:22:48 TRACE: 140 [main]
15:22:48 TRACE: Appending type: g value: ssss [main]
15:22:48 TRACE: padding for g [main]
15:22:48 TRACE: 0 3 140 1 [main]
15:22:48 TRACE: start: 16 end: 146 length: 130 [main]
15:22:48 TRACE: Marshalled int 130 to 82 00 00 00  [main]
15:22:48 TRACE: padding for  [main]
15:22:48 TRACE: 0 6 146 8 [main]
15:22:48 TRACE: 0 6 152 6 [main]
15:22:48 DEBUG: Appending sig: ssss data: sleep, Sandmann, Perform actions before sleep, delay [main]
15:22:48 TRACE: Appending item: 0 s 0 [main]
15:22:48 TRACE: 152 [main]
15:22:48 TRACE: Appending type: s value: sleep [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 6 152 4 [main]
15:22:48 TRACE: Appending String of length 5 [main]
15:22:48 TRACE: Marshalled int 5 to 05 00 00 00  [main]
15:22:48 TRACE: Appending item: 1 s 1 [main]
15:22:48 TRACE: 162 [main]
15:22:48 TRACE: Appending type: s value: Sandmann [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 6 162 4 [main]
15:22:48 TRACE: 0 6 164 2 [main]
15:22:48 TRACE: Appending String of length 8 [main]
15:22:48 TRACE: Marshalled int 8 to 08 00 00 00  [main]
15:22:48 TRACE: Appending item: 2 s 2 [main]
15:22:48 TRACE: 177 [main]
15:22:48 TRACE: Appending type: s value: Perform actions before sleep [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 6 177 4 [main]
15:22:48 TRACE: 0 6 180 3 [main]
15:22:48 TRACE: Appending String of length 28 [main]
15:22:48 TRACE: Marshalled int 28 to 1c 00 00 00  [main]
15:22:48 TRACE: Resizing 40 [main]
15:22:48 TRACE: Appending item: 3 s 3 [main]
15:22:48 TRACE: 213 [main]
15:22:48 TRACE: Appending type: s value: delay [main]
15:22:48 TRACE: padding for s [main]
15:22:48 TRACE: 0 6 213 4 [main]
15:22:48 TRACE: 0 6 216 3 [main]
15:22:48 TRACE: Appending String of length 5 [main]
15:22:48 TRACE: Marshalled int 5 to 05 00 00 00  [main]
15:22:48 TRACE: Appended body, type: ssss start: 152 end: 226 size: 74 [main]
15:22:48 TRACE: Marshalled int 74 to 4a 00 00 00  [main]
15:22:48 TRACE: marshalled size ([74, 0, 0, 0]): 000000 4a 00 00 00                                            J...               [main]
15:22:48 DEBUG: <= MethodCall(0,4) { Invalid=>null, Path=>/org/freedesktop/login1, Interface=>org.freedesktop.login1.Manager, Member=>Inhibit, Error Name=>null, Reply Serial=>null, Destination=>org.freedesktop.login1, Sender=>null, Signature=>ssss, Unix FD=>null } { sleep, Sandmann, Perform actions before sleep, delay } [DBus Sender Thread-1]
15:22:48 TRACE: Blocking on MethodCall(0,4) { Invalid=>null, Path=>/org/freedesktop/login1, Interface=>org.freedesktop.login1.Manager, Member=>Inhibit, Error Name=>null, Reply Serial=>null, Destination=>org.freedesktop.login1, Sender=>null, Signature=>ssss, Unix FD=>null } { sleep, Sandmann, Perform actions before sleep, delay } [main]
15:22:48 TRACE: 000000  6c 01 00 01                                            l...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  4a 00 00 00                                            J...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  04 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  82 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01 6f 00                                               .o.                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  17 00 00 00                                            ...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  2f 6f 72 67 2f 66 72 65 65 64 65 73 6b 74 6f 70 2f 6c  /org/freedesktop/l
000012  6f 67 69 6e 31                                         ogin1              [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  06                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01 73 00                                               .s.                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  16 00 00 00                                            ...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  6f 72 67 2e 66 72 65 65 64 65 73 6b 74 6f 70 2e 6c 6f  org.freedesktop.lo
000012  67 69 6e 31                                            gin1               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  02                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01 73 00                                               .s.                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  1e 00 00 00                                            ...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  6f 72 67 2e 66 72 65 65 64 65 73 6b 74 6f 70 2e 6c 6f  org.freedesktop.lo
000012  67 69 6e 31 2e 4d 61 6e 61 67 65 72                    gin1.Manager       [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  03                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01 73 00                                               .s.                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  07 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  49 6e 68 69 62 69 74                                   Inhibit            [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  08                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  01 67 00                                               .g.                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  04 73 73 73 73 00                                      .ssss.             [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00 00 00 00 00 00                                      ......             [DBus Sender Thread-1]
15:22:48 TRACE: 000000  05 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  73 6c 65 65 70                                         sleep              [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00 00                                                  ..                 [DBus Sender Thread-1]
15:22:48 TRACE: 000000  08 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  53 61 6e 64 6d 61 6e 6e                                Sandmann           [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00 00 00                                               ...                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  1c 00 00 00                                            ...               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  50 65 72 66 6f 72 6d 20 61 63 74 69 6f 6e 73 20 62 65  Perform actions be
000012  66 6f 72 65 20 73 6c 65 65 70                          fore sleep         [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00 00 00                                               ...                [DBus Sender Thread-1]
15:22:48 TRACE: 000000  05 00 00 00                                            ....               [DBus Sender Thread-1]
15:22:48 TRACE: 000000  64 65 6c 61 79                                         delay              [DBus Sender Thread-1]
15:22:48 TRACE: 000000  00                                                     .                  [DBus Sender Thread-1]
15:22:48 TRACE: (buffer was null) [DBus Sender Thread-1]
15:22:48 TRACE: Message sent: MethodCall(0,4) { Invalid=>null, Path=>/org/freedesktop/login1, Interface=>org.freedesktop.login1.Manager, Member=>Inhibit, Error Name=>null, Reply Serial=>null, Destination=>org.freedesktop.login1, Sender=>null, Signature=>ssss, Unix FD=>null } { sleep, Sandmann, Perform actions before sleep, delay } [DBus Sender Thread-1]

15:22:48 TRACE: 000000  6c 02 01 01 04 00 00 00 a3 03 00 00                    l...........       [DBusConnection [listener=false]]
15:22:48 TRACE: 000000  35 00 00 00 00 00 00 00 05 01 75 00 04 00 00 00 06 01  5.........u.......
000012  73 00 06 00 00 00 3a 31 2e 32 32 39 00 00 08 01 67 00  s.....:1.229....g.
000024  01 68 00 00 09 01 75 00 01 00 00 00 07 01 73 00 04 00  .h....u.......s...
000036  00 00 3a 31 2e 31 00 00 00 00                          ..:1.1....         [DBusConnection [listener=false]]
15:22:48 TRACE: 000000  00 00 00 00                                            ....               [DBusConnection [listener=false]]

15:22:48 TRACE: extract(u,#12, {0,4} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: u from offset 4 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to u [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: 4 (now at 8) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(u,#12, {0,8} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: u from offset 8 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to u [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: 931 (now at 12) [DBusConnection [listener=false]]
15:22:48 TRACE: Message header: 5.........u.......s.....:1.229....g..h....u.......s.....:1.1.... [DBusConnection [listener=false]]
15:22:48 TRACE: extract(a(yv),#64, {0,0} [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to a [DBusConnection [listener=false]]
15:22:48 TRACE: Reading array of size: 53 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to y [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'y' to: '5' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to v [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,9} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 9 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: u (now at 12) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(u,#64, {0,12} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: u from offset 12 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to u [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: 4 (now at 16) [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'v' to: '4' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[5, 4]' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to y [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'y' to: '6' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to v [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,17} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 17 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: s (now at 20) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(s,#64, {0,20} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: s from offset 20 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to s [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: :1.229 (now at 31) [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'v' to: ':1.229' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[6, :1.229]' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to y [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'y' to: '8' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to v [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,33} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 33 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: g (now at 36) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,36} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 36 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: h (now at 39) [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'v' to: 'h' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[8, h]' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to y [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'y' to: '9' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to v [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,41} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 41 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: u (now at 44) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(u,#64, {0,44} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: u from offset 44 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to u [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: 1 (now at 48) [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'v' to: '1' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[9, 1]' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to ( [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to y [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'y' to: '7' [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to v [DBusConnection [listener=false]]
15:22:48 TRACE: extract(g,#64, {0,49} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: g from offset 49 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to g [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: s (now at 52) [DBusConnection [listener=false]]
15:22:48 TRACE: extract(s,#64, {0,52} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: s from offset 52 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to s [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted: :1.1 (now at 61) [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type 'v' to: ':1.1' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[7, :1.1]' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted header signature type ')' to: '[[5, 4], [6, :1.229], [8, h], [9, 1], [7, :1.1]]' [DBusConnection [listener=false]]
15:22:48 TRACE: Extracted objects: [[5, 4], [6, :1.229], [8, h], [9, 1], [7, :1.1]] [DBusConnection [listener=false]]
15:22:48 TRACE: extract(h,#4, {0,0} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: h from offset 0 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to h [DBusConnection [listener=false]]

15:22:48 DEBUG: => [!!!org.freedesktop.dbus.messages.MethodReturn@4bf41bb0=>java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0!!!] [DBusConnection [listener=false]]

15:22:48 TRACE: extract(h,#4, {0,0} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: h from offset 0 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to h [DBusConnection [listener=false]]
15:22:48 TRACE: Got Incoming Message: [!!!org.freedesktop.dbus.messages.MethodReturn@4bf41bb0=>java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0!!!] [DBusConnection [listener=false]]
15:22:48 TRACE: extract(h,#4, {0,0} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: h from offset 0 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to h [DBusConnection [listener=false]]
15:22:48 DEBUG: Handling incoming method return: [!!!org.freedesktop.dbus.messages.MethodReturn@4bf41bb0=>java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0!!!] [DBusConnection [listener=false]]
15:22:48 TRACE: extract(h,#4, {0,0} [DBusConnection [listener=false]]
15:22:48 TRACE: Extracting type: h from offset 0 [DBusConnection [listener=false]]
15:22:48 TRACE: aligning to h [DBusConnection [listener=false]]

15:22:48 TRACE: Setting reply to MethodCall(0,4) { Invalid=>null, Path=>/org/freedesktop/login1, Interface=>org.freedesktop.login1.Manager, Member=>Inhibit, Error Name=>null, Reply Serial=>null, Destination=>org.freedesktop.login1, Sender=>null, Signature=>ssss, Unix FD=>null } { sleep, Sandmann, Perform actions before sleep, delay } to [!!!org.freedesktop.dbus.messages.MethodReturn@4bf41bb0=>java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0!!!] [DBusConnection [listener=false]]
15:22:48 TRACE: extract(h,#4, {0,0} [main]
15:22:48 TRACE: Extracting type: h from offset 0 [main]
15:22:48 TRACE: aligning to h [main]
hypfvieh commented 1 year ago

FileDescriptor only work when using jnr-transport and https://github.com/rm5248/dbus-java-nativefd as third party library. Support for FileDescriptor without the 3rd party library will be available with version 4.3.1 when using junixsocket transport.

The error message says that you have added 2 different unix transports (jnr and native). You can only use one of them. This is because dbus-java-nativefd pulls in jnr-transport while you also added native-transport as dependency. Please remove native-transport from your dependencies, add dbus-java-nativefd and jnr-transport instead (please add both to be sure you use the same version for dbus-java-core and jnr-transport).

Enabling trace logging is nothing slf4j related but log4j configuration in your case. Slf4j is just a abstraction to allow using any compatible logging framework instead of enforcing one. Configuring log4j to also log trace messages should do the trick.

Flowdalic commented 1 year ago

The error message says that you have added 2 different unix transports (jnr and native).

Yep, I got that.

After adding dbus-java-nativefd and swapping dbus-java-transport-native-unixsocket for dbus-java-transport-jnr-unixsocket it appears to work. Thanks for your help.

May I suggest that dbus-java, instead of throwing an IndexOutOfBoundsException when there is no support for FileDescriptor instead emits a meaning error message? This would improve dbus-java's usability a lot.