[Bug 88729] New: remote-viewer: Unlock cellphone screen made remote-viewer stuck

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Jan 22 22:15:07 PST 2015


https://bugs.freedesktop.org/show_bug.cgi?id=88729

            Bug ID: 88729
           Summary: remote-viewer: Unlock cellphone screen made
                    remote-viewer stuck
           Product: Spice
           Version: unspecified
          Hardware: x86 (IA32)
                OS: Windows (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: spice-gtk
          Assignee: spice-bugs at lists.freedesktop.org
          Reporter: dean_yu at outlook.com

I encounter a wierd problem when testing my cell-phone via usb-redirect.

Test environment:
Client OS: win7-32bit
Client: remote-viewer
VM OS:  win7-32bit

Tool-chain:
zadig-2.1 (use libusbk)
usbredir-0.7
spice-gtk-0.27 (use gtk-2.0)
virt-viewer-0.6 (use gtk-2.0)

Test device:
IPhone 5s
Google Nexus 3

Problem:
It seems that almost all USB device can be redirected successfully included
cellphone. However, when my IPhone
appeared in the VM OS, I can double click the phone icon, see its storage card.
Then, I clicked 'Trust' button on my phone. Then, the whole window of
remote-viewer is stuck, and cannot be closed normally( one way to close it is
kill the process from task manager).
The same problem can be reproduced on Android phone, take my Nexus 3 as an
example. The phone screen is locked with pattern lock before redirect, and
unlock it after redirect. Then, remote-viewer is stuck.

Accidentally, I found a way to fix the bug. I add a printf in the beginning of
usbredir_handle_msg() function, as below:
static void usbredir_handle_msg(SpiceChannel *c, SpiceMsgIn *in)
{
    SpiceUsbredirChannel *channel = SPICE_USBREDIR_CHANNEL(c);
    SpiceUsbredirChannelPrivate *priv = channel->priv;
    device_error_data data;
    int r, size;
    uint8_t *buf;

    g_return_if_fail(priv->host != NULL);

    /* No recursion allowed! */
    g_return_if_fail(priv->read_buf == NULL);

    buf = spice_msg_in_raw(in, &size);
    priv->read_buf = buf;
    priv->read_buf_size = size;

    printf("msg\n");

    r = usbredirhost_read_guest_data(priv->host);

I don't know why it works. And I try to use sleep(0) to instead, it doesn't
work. Then, use sleep(1), it works, but decreased the performance of handling
usb message.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-bugs/attachments/20150123/f75d2561/attachment.html>


More information about the spice-bugs mailing list