Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Issue 2575103002: Fixing CRD curtain mode connection failures on Win8+ official builds (Closed)

Created:
4 years ago by joedow
Modified:
4 years ago
Reviewers:
CC:
chromium-reviews
Target Ref:
refs/pending/branch-heads/2924
Project:
chromium
Visibility:
Public.

Description

Fixing CRD curtain mode connection failures on Win8+ official builds I've root caused this and the problem was introduced in this CL: https://codereview.chromium.org/2446053002 That CL moved the logic which reported the worker process launch from the IPC Channel Connected method to an IO completion port listener. This works fine on un-official builds, however it breaks on official builds. The reason for the failure is that the remoting_desktop process on official builds are signed and include 'UiAccess' in their manifest. When the launcher process uses ShellExecuteEx to launch the worker process in this scenario, we actually see two processes get launched sequentially. The first starts and exists with error code 'STATUS_ELEVATION_REQUIRED' and the second launches with the correct permissions. This behavior worked fine before as we listened for the connection to the IPC channel which was done by the second, successful process launch. With the new code, we observed the first process launch, set up the Mojo channel for it, and tried waiting on its process handle which exits immediately. The second process then starts and fails to connect to the Mojo channel. I investigated whether UiAccess is truly required for the desktop binary and I think that it is. For the Ctrl+Alt+Del scenario, there are registry keys that can be set which will require that flag. For Alt+Tab, it is possible that some windows might not be accessible if they have a high high enough integrity level (+ UiAccess themselves). So instead of removing the UiAccess flag, my approach is to listen for the worker process creation and exit events. I store the value of the last seen worker process id and use that in our process launch detection code once the launcher process exits. This allows both un-official builds (which do not require the extra permissions hop) and official builds will work consistently. BUG=666992 Review-Url: https://codereview.chromium.org/2568983004 Cr-Commit-Position: refs/heads/master@{#438077} (cherry picked from commit 1cdb04810de9689ba0ea5ab7e70bd35ce5477063) Committed: https://chromium.googlesource.com/chromium/src/+/286e4172c0f1d07fa50d101ff46d20ad42aefb3e

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+52 lines, -15 lines) Patch
M remoting/host/desktop_session_win.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M remoting/host/win/BUILD.gn View 1 chunk +1 line, -1 line 0 comments Download
M remoting/host/win/wts_session_process_delegate.cc View 7 chunks +49 lines, -12 lines 0 comments Download

Messages

Total messages: 2 (1 generated)
joedow
4 years ago (2016-12-14 17:04:26 UTC) #2
Message was sent while issue was closed.
Committed patchset #1 (id:1) manually as
286e4172c0f1d07fa50d101ff46d20ad42aefb3e.

Powered by Google App Engine
This is Rietveld 408576698