Bug 692976
Summary: | Spice client crashes when connecting to a Windows guest with support of 2 screens | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Marian Krcmarik <mkrcmari> | ||||||||
Component: | spice-client | Assignee: | Yonit Halperin <yhalperi> | ||||||||
Status: | CLOSED ERRATA | QA Contact: | Desktop QE <desktop-qa-list> | ||||||||
Severity: | urgent | Docs Contact: | |||||||||
Priority: | urgent | ||||||||||
Version: | 6.1 | CC: | acathrow, cmeadors, cpelland, dblechte, iheim, marcandre.lureau, mkenneth, uril, yhalperi | ||||||||
Target Milestone: | beta | ||||||||||
Target Release: | --- | ||||||||||
Hardware: | Unspecified | ||||||||||
OS: | Unspecified | ||||||||||
Whiteboard: | |||||||||||
Fixed In Version: | spice-client-0.8.2-1.el6 spicec-win-0.1-5 | Doc Type: | Bug Fix | ||||||||
Doc Text: |
Cause
Endless recursion in spice-client, when guest (and client) used more than a single monitor (rearrange_monitors -> prepare_monitors -> resize -> errange_monitors ->...).
Consequence
spicec crashed.
Fix
Break endless recursion (resize does not call rearrange_monitors).
Result
spicec does not crash anymore.
|
Story Points: | --- | ||||||||
Clone Of: | Environment: | ||||||||||
Last Closed: | 2011-12-06 15:22:17 UTC | Type: | --- | ||||||||
Regression: | --- | Mount Type: | --- | ||||||||
Documentation: | --- | CRM: | |||||||||
Verified Versions: | Category: | --- | |||||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||||
Embargoed: | |||||||||||
Bug Depends On: | |||||||||||
Bug Blocks: | 612966 | ||||||||||
Attachments: |
|
Description
Marian Krcmarik
2011-04-01 20:43:37 UTC
Created attachment 489507 [details]
Abrt log with bt
Since RHEL 6.1 External Beta has begun, and this bug remains unresolved, it has been rejected as it is not proposed as exception or blocker. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. Reproduced by Michal Hasko, It's not able to use 2 monitors when launching a guest from RHEVM2.2.7. I reproduced this when guest was started within RHEVM2.3 (it means RHEVM2.3(ic116), RHEL6.1 host, 0.8.1 spice server), I switch two screens to full-screen mode and then I reboot Windows guest and spice-client-0.8.0-2.el6.x86_64 crashed. In backtrace the same loop is obvious: . . . #20278 0x000000000041e736 in Application::prepare_monitors (this=0x2076bc0) at ../../client/application.cpp:1450 #20279 0x000000000041fb81 in Application::rearrange_monitors (this=0x2076bc0, screen=...) at ../../client/application.cpp:1396 #20280 0x00000000004d7f7c in RedScreen::resize (this=0x20a7890, width=1440, height=900) at ../../client/screen.cpp:189 #20281 0x000000000041e736 in Application::prepare_monitors (this=0x2076bc0) at ../../client/application.cpp:1450 #20282 0x000000000041fb81 in Application::rearrange_monitors (this=0x2076bc0, screen=...) at ../../client/application.cpp:1396 #20283 0x00000000004d7f7c in RedScreen::resize (this=0x20a7890, width=1440, height=900) at ../../client/screen.cpp:189 #20284 0x000000000041e736 in Application::prepare_monitors (this=0x2076bc0) at ../../client/application.cpp:1450 #20285 0x000000000041fb81 in Application::rearrange_monitors (this=0x2076bc0, screen=...) at ../../client/application.cpp:1396 #20286 0x00000000004d7f7c in RedScreen::resize (this=0x20a7890, width=1440, height=900) at ../../client/screen.cpp:189 #20287 0x000000000041e736 in Application::prepare_monitors (this=0x2076bc0) at ../../client/application.cpp:1450 #20288 0x000000000041fb81 in Application::rearrange_monitors (this=0x2076bc0, screen=...) at ../../client/application.cpp:1396 #20289 0x00000000004d7f7c in RedScreen::resize (this=0x20a7890, width=1440, height=900) at ../../client/screen.cpp:189 #20290 0x000000000041e736 in Application::prepare_monitors (this=0x2076bc0) at ../../client/application.cpp:1450 #20291 0x000000000041fb81 in Application::rearrange_monitors (this=0x2076bc0, screen=...) at ../../client/application.cpp:1396 #20292 0x00000000004d7f7c in RedScreen::resize (this=0x20a7890, width=1440, height=900) at ../../client/screen.cpp:189 . . . . taking the bug, as I can reproduce it, and made a simple workaround Created attachment 499823 [details]
simple workaround
There is an obvious loop in the code, which I really don't understand why the code is like that and how it worked...
The easy workaround is to break the loop by having a reentering flag, but perhaps we should be calling screen->lock_size() instead?
I don't know if it's worth investigating more since we are deprecating spicec.
Created attachment 514147 [details]
another solution
Verified on spice-client-0.8.2-1. Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause Endless recursion in spice-client, when guest (and client) used more than a single monitor (rearrange_monitors -> prepare_monitors -> resize -> errange_monitors ->...). Consequence spicec crashed. Fix Break endless recursion (resize does not call rearrange_monitors). Result spicec does not crash anymore. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2011-1518.html |