bk138 / multivnc

MultiVNC is a cross-platform Multicast-enabled VNC viewer based on LibVNCClient. The desktop client runs on Unix, Mac OS X and Windows. There also is an Android client.
GNU General Public License v3.0
460 stars 66 forks source link

Client does not support NewFBSize #159

Closed maurerle closed 3 years ago

maurerle commented 3 years ago

If you'd like to put out an incentive for fixing this bug, you can do so at https://issuehunt.io/r/bk138/multivnc?tab=idle

Is your bug report about the Desktop Multivnc or the Mobile MultiVNC?

Which MultiVNC version are you using? 1.9.11

Describe the bug When connecting from Android to my Debian 11 Bullseye Laptop, the connection opens with a screensize of 800x600 and shows only the upper left part of my 1920x1080 screen.

When the cursor is not in the visible 800x600 part, the connection fails with "VNC Connection failed!"

The log of my Debian Laptop shows

Jul 16 23:20:54 laptop gnome-remote-de[56878]: Client does not support NewFBSize
Jul 16 23:20:58 laptop gnome-shell[5061]: g_udev_client_query_by_device_file: assertion 'device_file != NULL' failed

To Reproduce see above. I wonder if this can be reproduced with current Debian 11 Gnome Desktop

Expected Behavior Full 1920x1080 resolution and no connection error

Screenshots

For the Desktop Version (please complete the following information):

For the Mobile Version (please complete the following information):

Additional context

maurerle commented 3 years ago

relevant logcat lines from adb seem to be this:

07-17 00:02:33.821 20737 20800 I VNCConn-native: Rect too large: 24x7 at (661, 600)
07-17 00:02:33.821 20737 20800 E VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@713a875: rfbProcessServerMessage() failed
07-17 00:02:33.821 20737 20800 E VNCConn : java.lang.Exception
07-17 00:02:33.822 20737 20800 W System.err: java.lang.Exception
07-17 00:02:33.822 20737 20800 W System.err:    at com.coboltforge.dontmind.multivnc.VNCConn$ServerToClientThread.run(VNCConn.java:217)
07-17 00:02:33.822 20737 20800 I VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@713a875: rfbShutdown() closing connection
07-17 00:02:33.832  1609  1668 E WindowManager: App trying to use insecure INPUT_FEATURE_NO_INPUT_CHANNEL flag. Ignoring
07-17 00:02:33.880 20737 20737 D VNCConnService: onDestroy

I tried to reproduce with a Debian 10 VM, where I forward the port to 5902 of my laptop. There I got a crashing App and this log with adb logat:

07-17 00:05:27.338 20737 20737 D VncCanvas: Changed prio from -10 to -4
07-17 00:05:27.603   696  1037 I netd    : tetherGetStats() <1.90ms>
07-17 00:05:27.674 20737 20737 D PointerInputHandler: MightyInputHandler com.coboltforge.dontmind.multivnc.PointerInputHandler@cef600c created!
07-17 00:05:27.674 20737 20737 D PointerInputHandler: MightyInputHandler com.coboltforge.dontmind.multivnc.PointerInputHandler@cef600c init!
07-17 00:05:27.675 20737 20737 D VncCanvasActivity: Got raw intent 0 : 192.168.178.111, port 5902
07-17 00:05:27.676 20737 20737 D VNCConn : initializing
07-17 00:05:27.685  1609  1668 E WindowManager: App trying to use insecure INPUT_FEATURE_NO_INPUT_CHANNEL flag. Ignoring
07-17 00:05:27.712 20737 21068 I VNCConn : Using IPv4: java.net.UnknownHostException: addr is of illegal length
07-17 00:05:27.712 20737 21068 I VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@5d66846: rfbInit()
07-17 00:05:27.712 20737 21068 I VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@5d66846: setupClient()
07-17 00:05:27.712 20737 21068 I VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@5d66846: rfbInit() about to connect to '192.168.178.111', port 5902, repeaterId 5900
07-17 00:05:27.723 20737 21067 E Adreno-UNKNOWN: <DrawTexture:62>: GL_INVALID_VALUE
07-17 00:05:27.742 20737 21068 E VNCConn-native: ConnectClientToTcpAddr6: connect
07-17 00:05:27.742 20737 21068 I VNCConn-native: Unable to connect to VNC server
07-17 00:05:27.742 20737 21068 E VNCConn-native: com.coboltforge.dontmind.multivnc.VNCConn@5d66846: rfbInit() connection failed. Cleanup by library.
07-17 00:05:27.742 20737 21068 E VNCConn : java.lang.Exception
07-17 00:05:27.742 20737 21068 W System.err: java.lang.Exception
07-17 00:05:27.743 20737 21068 W System.err:    at com.coboltforge.dontmind.multivnc.VNCConn$ServerToClientThread.run(VNCConn.java:190)
07-17 00:05:27.782  1609 10273 E InputDispatcher: Window handle Window{5de6a22 u0 Connecting...} has no registered input channel
07-17 00:05:27.814 20737 20737 D VNCConnService: onCreate
07-17 00:05:27.692  1609  1668 I chatty  : uid=1000(system) Binder:1609_2 identical 1 line
07-17 00:05:27.779  1609  1668 E WindowManager: App trying to use insecure INPUT_FEATURE_NO_INPUT_CHANNEL flag. Ignoring
07-17 00:05:27.815  1609 10273 W ActivityManager: Bringing down service while still waiting for start foreground: ServiceRecord{121bbf6 u0 com.coboltforge.dontmind.multivnc/.VNCConnService}
07-17 00:05:27.827 20737 20737 D VNCConnService: onDestroy
07-17 00:05:27.827 20737 20737 D AndroidRuntime: Shutting down VM
07-17 00:05:27.828 20737 20737 E AndroidRuntime: FATAL EXCEPTION: main
07-17 00:05:27.828 20737 20737 E AndroidRuntime: Process: com.coboltforge.dontmind.multivnc, PID: 20737
07-17 00:05:27.828 20737 20737 E AndroidRuntime: android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{121bbf6 u0 com.coboltforge.dontmind.multivnc/.VNCConnService}
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1945)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:107)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:214)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:7356)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
07-17 00:05:27.828 20737 20737 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)

Directly connecting to Port 5900 of my VM worked fine with a screen resolution of 1280x720! :)

Just tell if you need any other Information for one of the issues

gujjwal00 commented 3 years ago

Hi @maurerle , Thanks for the detailed report.

Support for framebuffer resize was added very recently (df86b2d1). Can you please try building from source?

the connection opens with a screensize of 800x600 and shows only the upper left part of my 1920x1080 screen

This should not happen. Can you attach full logcat output?

I tried to reproduce with a Debian 10 VM, where I forward the port to 5902 of my laptop. There I got a crashing App and this log with adb logat:

First, here the connection is failing in ConnectClientToTcpAddr6, so it might be due to mismatched address/port. Can you please double check that the server is listening on correct port and is reachable from device?

Second, the app crashes because of fatal android.app.RemoteServiceException. @bk138 might know more about this.

maurerle commented 3 years ago

Thanks for your help! :)

Could you please provide a apk binary as I don't have Android Studio here? Otherwise how long would it take to release the fix to f-droid?

Yes I see now, that forwarding a port through ssh only binds to 127.0.0.1 and not any interface. Giving better user feedback would be good :)

gujjwal00 commented 3 years ago

app-debug.zip

This can be installed alongside existing app.

gujjwal00 commented 3 years ago

Giving better user feedback would be good :)

Yes this can be improved a lot.

Root cause of current behavior is that LibVNCClient doesn't return any error code when something goes wrong. It logs the error and simply returns FALSE. I have done some work on it but haven't found the time to upstream it yet.

maurerle commented 3 years ago

The Debug-App works great. No App crash if a connection could not be established and the Connection starts as 800x600 and resizes directly to 1920x1080 and works fine too!

Would be great to release the fixes :)

bk138 commented 3 years ago

dupe of #133