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)

Reply via email to