AsamK / signal-cli

signal-cli provides an unofficial commandline, JSON-RPC and dbus interface for the Signal messenger.
GNU General Public License v3.0
3.23k stars 305 forks source link

signal-cli 0.12.2 ill-formed UTF-16 #1341

Open selfbc opened 1 year ago

selfbc commented 1 year ago

Going from Signal-cli 0.12.1 to Signal-cli 0.12.2 amd64 works for awhile, and then fails with the following repeatedly: 2023-10-07T11:48:53.059-0400 [daemon-connection-0] WARN c.google.protobuf.CodedOutputStream - Converting ill-formed UTF-16. Your Protocol Buffer will not round trip correctly! com.google.protobuf.Utf8$UnpairedSurrogateException: Unpaired surrogate at index 1998 of 2000 at com.google.protobuf.Utf8$UnsafeProcessor.encodeUtf8(Utf8.java:1506) at com.google.protobuf.Utf8.encode(Utf8.java:294) at com.google.protobuf.CodedOutputStream$ArrayEncoder.writeStringNoTag(CodedOutputStream.java:1466) at com.google.protobuf.CodedOutputStream$ArrayEncoder.writeString(CodedOutputStream.java:1225) at com.google.protobuf.CodedOutputStreamWriter.writeString(CodedOutputStreamWriter.java:125) at com.google.protobuf.MessageSchema.writeString(MessageSchema.java:4618) at com.google.protobuf.MessageSchema.writeFieldsInAscendingOrder(MessageSchema.java:2200) at com.google.protobuf.MessageSchema.writeTo(MessageSchema.java:2096) at com.google.protobuf.CodedOutputStream$ArrayEncoder.writeMessage(CodedOutputStream.java:1291) at com.google.protobuf.CodedOutputStreamWriter.writeMessage(CodedOutputStreamWriter.java:155) at com.google.protobuf.MessageSchema.writeFieldsInAscendingOrder(MessageSchema.java:2207) at com.google.protobuf.MessageSchema.writeTo(MessageSchema.java:2096) at com.google.protobuf.GeneratedMessageLite.writeTo(GeneratedMessageLite.java:338) at com.google.protobuf.AbstractMessageLite.toByteArray(AbstractMessageLite.java:71) at org.whispersystems.signalservice.api.crypto.EnvelopeContent$Encrypted.processSealedSender(EnvelopeContent.java:83) at org.whispersystems.signalservice.api.crypto.SignalServiceCipher.encrypt(SignalServiceCipher.java:124) at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessage(SignalServiceMessageSender.java:2605) at org.whispersystems.signalservice.api.SignalServiceMessageSender.getEncryptedMessages(SignalServiceMessageSender.java:2563) at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendMessage(SignalServiceMessageSender.java:2169) at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendContent(SignalServiceMessageSender.java:486) at org.whispersystems.signalservice.api.SignalServiceMessageSender.sendDataMessage(SignalServiceMessageSender.java:439) at org.asamk.signal.manager.helper.SendHelper.lambda$sendMessage$19(SendHelper.java:655) at org.asamk.signal.manager.helper.SendHelper.handleSendMessage(SendHelper.java:680) at org.asamk.signal.manager.helper.SendHelper.sendMessage(SendHelper.java:653) at org.asamk.signal.manager.helper.SendHelper.sendMessage(SendHelper.java:96) at org.asamk.signal.manager.internal.ManagerImpl.sendMessage(ManagerImpl.java:490) at org.asamk.signal.manager.internal.ManagerImpl.sendMessage(ManagerImpl.java:474) at org.asamk.signal.manager.internal.ManagerImpl.sendMessage(ManagerImpl.java:595) at org.asamk.signal.commands.SendCommand.handleCommand(SendCommand.java:227) at org.asamk.signal.commands.JsonRpcLocalCommand.handleCommand(JsonRpcLocalCommand.java:25) at org.asamk.signal.commands.JsonRpcLocalCommand.handleCommand(JsonRpcLocalCommand.java:15) at org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler$CommandRunnerImpl.handleCommand(SignalJsonRpcCommandHandler.java:150) at org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler.parseParamsAndRunCommand(SignalJsonRpcCommandHandler.java:261) at org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler.runCommand(SignalJsonRpcCommandHandler.java:209) at org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler.handleRequest(SignalJsonRpcCommandHandler.java:63) at org.asamk.signal.jsonrpc.SignalJsonRpcDispatcherHandler.lambda$handleConnection$4(SignalJsonRpcDispatcherHandler.java:137) at org.asamk.signal.jsonrpc.JsonRpcReader.handleRequest(JsonRpcReader.java:104) at org.asamk.signal.jsonrpc.JsonRpcReader.handleMessage(JsonRpcReader.java:80) at org.asamk.signal.jsonrpc.JsonRpcReader.readMessages(JsonRpcReader.java:69) at org.asamk.signal.jsonrpc.SignalJsonRpcDispatcherHandler.handleConnection(SignalJsonRpcDispatcherHandler.java:137) at org.asamk.signal.jsonrpc.SignalJsonRpcDispatcherHandler.handleConnection(SignalJsonRpcDispatcherHandler.java:63) at org.asamk.signal.commands.DaemonCommand.lambda$runSocketMultiAccount$4(DaemonCommand.java:274) at org.asamk.signal.commands.DaemonCommand.lambda$runSocket$5(DaemonCommand.java:299) at java.base@17.0.8/java.lang.Thread.run(Thread.java:833) at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775) at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)

I would revert back to 0.12.1 since it's stable, but Android attachments are currently broken in that build.

AsamK commented 1 year ago

Does it actually fail to send the message? This is just a WARNing. Not sure where the invalid UTF-16 char is coming from though ... Would be interesting to check if this also occurs with the latest master or next version, as the com.google.protobuf library has been replaced by wire in the newer libsignal-service-java.

selfbc commented 1 year ago

I'm on the latest master now. It actually stopped sending messages but they went through for the first few hours of that error hitting the logs. I'm not sure the precise point they stopped, but the logs were flooded with that error.