Public bug reported:

## Environment
* Ubuntu 20.04.1 LTS (Server)
* Weson 8.0.0-1 (From apt source)

## How to reproduce
Run a fresh Ubuntu Focal server image, install `Weston` by apt, launch with 
```
weston --rdp-tls-cert=tls.crt --rdp-tls-key=tls.key --backend=rdp-backend.so
```
Now connect to the RDP server from Windows 20H2 with audio and local resource 
redirection disabled, resolution set to 1920x1080 (altering these arguments 
seems have no affect to the result).

Then an internal error might occur. Sometimes it connects normally, like 50% of 
chance, sometimes it will give this internal error messagebox and quit.
![Screenshot_2020-11-08_003556](https://gitlab.freedesktop.org/wayland/weston/uploads/81aa1603970a7760d5fdb622c1e85988/Screenshot_2020-11-08_003556.png)

Log is 
```
[15:41:38:855] [12885:12885] [ERROR][com.freerdp.core.peer] - 
peer_recv_callback: CONNECTION_STATE_ACTIVE - peer_recv_pdu() fail
[15:41:38:855] [12885:12885] [ERROR][com.freerdp.core.transport] - 
transport_check_fds: transport->ReceiveCallback() - -1
[15:41:38.950] unable to checkDescriptor for 0x5601bb2125b0
[15:41:41:328] [12885:12885] [INFO][com.freerdp.core.connection] - Client 
Security: NLA:1 TLS:1 RDP:0
[15:41:41:328] [12885:12885] [INFO][com.freerdp.core.connection] - Server 
Security: NLA:0 TLS:1 RDP:1
[15:41:41:328] [12885:12885] [INFO][com.freerdp.core.connection] - Negotiated 
Security: NLA:0 TLS:1 RDP:0
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] - Accepted 
client: WORK-PC
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] - Accepted 
channels:
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] -  rdpdr
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] -  rdpsnd
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] -  cliprdr
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.connection] -  drdynvc
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.gcc] - Active rdp 
encryption level: NONE
[15:41:41:345] [12885:12885] [INFO][com.freerdp.core.gcc] - Selected rdp 
encryption method: NONE
[15:41:41.491] kbd_layout:0x409 kbd_type:0x4 kbd_subType:0x0 
kbd_functionKeys:0xc
[15:41:41.491] xf_peer_activate: matching layout=us variant=(null)
[15:41:41:404] [12885:12885] [WARN][com.freerdp.core.surface] - 
SURFACE_BITS_COMMAND->cmdType 0x0000 not allowed, correcting to 0x0006
[15:41:41:416] [12885:12885] [WARN][com.freerdp.core.surface] - 
SURFACE_BITS_COMMAND->cmdType 0x0000 not allowed, correcting to 0x0006
[15:41:41:416] [12885:12885] [ERROR][com.freerdp.core.transport] - 
BIO_should_retry returned a system error 104: Connection reset by peer
[15:41:41:416] [12885:12885] [ERROR][com.freerdp.core] - 
transport_write:freerdp_set_last_error_ex ERRCONNECT_CONNECT_TRANSPORT_FAILED 
[0x0002000D]
[15:41:41:416] [12885:12885] [ERROR][com.freerdp.core.transport] - BIO_read 
returned a system error 0: Success
[15:41:41.510] unable to checkDescriptor for 0x5601bb6746f0
```

Now if you try to connect again, you will get

![Screenshot_2020-11-08_004240](https://gitlab.freedesktop.org/wayland/weston/uploads/47387c3909b669b48c3b8d3e7f703b40/Screenshot_2020-11-08_004240.png)

Then weston will get segfault and quit, here is the log (right after above)
```
[15:42:09:218] [12885:12885] [INFO][com.freerdp.core.connection] - Client 
Security: NLA:1 TLS:1 RDP:0
[15:42:09:218] [12885:12885] [INFO][com.freerdp.core.connection] - Server 
Security: NLA:0 TLS:1 RDP:1
[15:42:09:218] [12885:12885] [INFO][com.freerdp.core.connection] - Negotiated 
Security: NLA:0 TLS:1 RDP:0
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] - Accepted 
client: WORK-PC
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] - Accepted 
channels:
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] -  rdpdr
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] -  rdpsnd
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] -  cliprdr
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.connection] -  drdynvc
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.gcc] - Active rdp 
encryption level: NONE
[15:42:09:222] [12885:12885] [INFO][com.freerdp.core.gcc] - Selected rdp 
encryption method: NONE
[15:42:09:240] [12885:12885] [WARN][com.freerdp.core.surface] - 
SURFACE_BITS_COMMAND->cmdType 0xc000 not allowed, correcting to 0x0006
Segmentation fault (core dumped)
```

I tried this on 3 different servers, same results are being observed. I
built weston from git and this issue still persists, hence the
underlying problem might come from dependencies - like freedrp.

## Notes
It connects normally using wfreerdp.exe, no error triggered.

If connect using Microsoft's Remote Desktop on Android, it only shows a
blank screen.

Gitlab on Freedesktop.org has automatic CI builds, I tried it and no
error occured - with both mstsc and Remote Desktop app on Android.

** Affects: weston (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu-X,
which is subscribed to weston in Ubuntu.
https://bugs.launchpad.net/bugs/1903485

Title:
  RDP-backend crash after failed connection from Windows 10 mstsc

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/weston/+bug/1903485/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~ubuntu-x-swat
Post to     : ubuntu-x-swat@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-x-swat
More help   : https://help.launchpad.net/ListHelp

Reply via email to