Adam created GUACAMOLE-2110:
-------------------------------
Summary: Session recordings from 1.5.5 does not play in 1.6.0
Key: GUACAMOLE-2110
URL: https://issues.apache.org/jira/browse/GUACAMOLE-2110
Project: Guacamole
Issue Type: Bug
Affects Versions: 1.6.0
Environment: guacamole/guacd 1.6.0, ARM, Docker.
Reporter: Adam
After updating guacamole and guacd to 1.6.0, old recordings of RDP sessions
from 1.5.5 play only for 5 seconds and then freeze.
When this happens, following is logged in browser console:
{code:java}
Uncaught (in promise) DOMException: CanvasRenderingContext2D.drawImage:
Passed-in canvas is empty
toCanvas https://guacamole.url/guacamole-common-js/all.min.js:96
exportState https://guacamole.url/guacamole-common-js/all.min.js:19
flush https://guacamole.url/guacamole-common-js/all.min.js:48
r https://guacamole.url/guacamole-common-js/all.min.js:46
unblock https://guacamole.url/guacamole-common-js/all.min.js:44
drawStream https://guacamole.url/guacamole-common-js/all.min.js:51
promise callback*Guacamole.Display/this.drawStream
https://guacamole.url/guacamole-common-js/all.min.js:51
img https://guacamole.url/guacamole-common-js/all.min.js:31
oninstruction https://guacamole.url/guacamole-common-js/all.min.js:38
receiveInstruction https://guacamole.url/guacamole-common-js/all.min.js:143
M https://guacamole.url/guacamole-common-js/all.min.js:138
receive https://guacamole.url/guacamole-common-js/all.min.js:128
b https://guacamole.url/guacamole-common-js/all.min.js:135
C https://guacamole.url/guacamole-common-js/all.min.js:136
M https://guacamole.url/guacamole-common-js/all.min.js:138
P https://guacamole.url/guacamole-common-js/all.min.js:139
y https://guacamole.url/guacamole-common-js/all.min.js:139
setTimeout handler*m
https://guacamole.url/guacamole-common-js/all.min.js:139
I https://guacamole.url/guacamole-common-js/all.min.js:139
J https://guacamole.url/guacamole-common-js/all.min.js:140
y https://guacamole.url/guacamole-common-js/all.min.js:140
setTimeout handler*J
https://guacamole.url/guacamole-common-js/all.min.js:140
J https://guacamole.url/guacamole-common-js/all.min.js:140
P https://guacamole.url/guacamole-common-js/all.min.js:139
M https://guacamole.url/guacamole-common-js/all.min.js:138
b https://guacamole.url/guacamole-common-js/all.min.js:135
C https://guacamole.url/guacamole-common-js/all.min.js:136
M https://guacamole.url/guacamole-common-js/all.min.js:138
P https://guacamole.url/guacamole-common-js/all.min.js:139
y https://guacamole.url/guacamole-common-js/all.min.js:139
setTimeout handler*m
https://guacamole.url/guacamole-common-js/all.min.js:139
I https://guacamole.url/guacamole-common-js/all.min.js:139
J https://guacamole.url/guacamole-common-js/all.min.js:140
J https://guacamole.url/guacamole-common-js/all.min.js:140
P https://guacamole.url/guacamole-common-js/all.min.js:139
M https://guacamole.url/guacamole-common-js/all.min.js:138
b https://guacamole.url/guacamole-common-js/all.min.js:135
C https://guacamole.url/guacamole-common-js/all.min.js:136
M https://guacamole.url/guacamole-common-js/all.min.js:138
P https://guacamole.url/guacamole-common-js/all.min.js:139
y https://guacamole.url/guacamole-common-js/all.min.js:139
setTimeout handler*m
https://guacamole.url/guacamole-common-js/all.min.js:139
I https://guacamole.url/guacamole-common-js/all.min.js:139
J https://guacamole.url/guacamole-common-js/all.min.js:140
J https://guacamole.url/guacamole-common-js/all.min.js:140
P https://guacamole.url/guacamole-common-js/all.min.js:139
M https://guacamole.url/guacamole-common-js/all.min.js:138
b https://guacamole.url/guacamole-common-js/all.min.js:135
C https://guacamole.url/guacamole-common-js/all.min.js:136
M https://guacamole.url/guacamole-common-js/all.min.js:138
P https://guacamole.url/guacamole-common-js/all.min.js:139
all.min.js:96 {code}
In this state, when trying to change recording position, following error is
logged:
{code:java}
Uncaught (in promise) DOMException: CanvasRenderingContext2D.drawImage:
Passed-in canvas is empty
toCanvas all.min.js:96
exportState all.min.js:19
flush all.min.js:48
r all.min.js:46
unblock all.min.js:44
drawStream all.min.js:51
promise callback*Guacamole.Display/this.drawStream all.min.js:51
img all.min.js:31
oninstruction all.min.js:38
receiveInstruction all.min.js:143
M all.min.js:138
receive all.min.js:128
b all.min.js:135
C all.min.js:136
M all.min.js:138
P all.min.js:139
m all.min.js:139
I all.min.js:139
J all.min.js:140
play all.min.js:141
seekToPlaybackPosition player.js:386
commitSeekRequest player.js:347
Angular 5
jQuery 8
Angular 24
jQuery 2
all.min.js:96
toCanvas all.min.js:96
exportState all.min.js:19
flush all.min.js:48
r all.min.js:46
unblock all.min.js:44
drawStream all.min.js:51
(asynchroniczny: promise callback)
drawStream all.min.js:51
img all.min.js:31
oninstruction all.min.js:38
receiveInstruction all.min.js:143
M all.min.js:138
receive all.min.js:128
b all.min.js:135
(asynchroniczny: EventHandlerNonNull)
C all.min.js:136
M all.min.js:138
P all.min.js:139
m all.min.js:139
I all.min.js:139
J all.min.js:140
play all.min.js:141
seekToPlaybackPosition player.js:386
commitSeekRequest player.js:347
Angular 5
jQuery 8
Angular 24
jQuery 2
{code}
Recordings made on 1.6.0 works fine.
When updating to 1.6.0, we migrated from x86 to ARM if this make any difference
here. Also, this was tested on latest Firefox and Chrome.
I don't see any warnings/errors in guacamole log when this is happening.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
