Skip to content

Commit 20cebfd

Browse files
committed
Merge branch 'master' of https://github.com/MicrosoftDocs/azure-docs-pr into aprilupdates
2 parents b16e3cc + 1352346 commit 20cebfd

File tree

9 files changed

+199
-9
lines changed

9 files changed

+199
-9
lines changed

articles/bastion/create-host-cli.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
title: 'Create a Bastion host using Azure CLI | Azure Bastion'
33
description: In this article, learn how to create and delete a Bastion host
44
services: bastion
5-
author: cherylmc
5+
author: mialdrid
66

77
ms.service: bastion
88
ms.topic: conceptual
99
ms.date: 03/26/2020
10-
ms.author: cherylmc
10+
ms.author: mialdrid
1111
# Customer intent: As someone with a networking background, I want to create an Azure Bastion host.
1212

1313
---

articles/bastion/quickstart-host-portal.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
title: 'Quickstart: Connect to a virtual machine using a private IP address: Azure Bastion'
33
description: In this article, learn how to create an Azure Bastion host from a virtual machine and connect securely using a private IP address.
44
services: bastion
5-
author: cherylmc
5+
author: charwen
66

77
ms.service: bastion
88
ms.topic: conceptual
99
ms.date: 03/11/2020
10-
ms.author: cherylmc
10+
ms.author: charwen
1111
# Customer intent: As someone with a networking background, I want to connect to a virtual machine securely via RDP/SSH without using a public IP address.
1212

1313
---

articles/bastion/work-remotely-support.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: 'Working remotely using Bastion: Azure Bastion'
33
description: This page describes how you can leverage Azure Bastion to enable working remotely due to the COVID-19 pandemic.
44
services: bastion
5-
author: cherylmc
5+
author: mialdrid
66

77
ms.service: bastion
88
ms.topic: conceptual

articles/iot-edge/production-checklist.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn how to take your Azure IoT Edge solution from development to
44
author: kgremban
55
manager: philmea
66
ms.author: kgremban
7-
ms.date: 08/09/2019
7+
ms.date: 4/02/2020
88
ms.topic: conceptual
99
ms.service: iot-edge
1010
services: iot-edge
@@ -129,11 +129,25 @@ When moving from test scenarios to production scenarios, remember to remove debu
129129
* Manage access to your container registry
130130
* Use tags to manage versions
131131

132-
### Manage access to your container registry
132+
### Manage access to your container registry with a service principal
133133

134134
Before you deploy modules to production IoT Edge devices, ensure that you control access to your container registry so that outsiders can't access or make changes to your container images. Use a private, not public, container registry to manage container images.
135135

136-
In the tutorials and other documentation, we instruct you to use the same container registry credentials on your IoT Edge device as you use on your development machine. These instructions are only intended to help you set up testing and development environments more easily, and should not be followed in a production scenario. Azure Container Registry recommends [authenticating with service principals](../container-registry/container-registry-auth-service-principal.md) when applications or services pull container images in an automated or otherwise unattended manner, as IoT Edge devices do. Create a service principal with read-only access to your container registry, and provide that username and password in the deployment manifest.
136+
In the tutorials and other documentation, we instruct you to use the same container registry credentials on your IoT Edge device as you use on your development machine. These instructions are only intended to help you set up testing and development environments more easily, and should not be followed in a production scenario. Azure Container Registry recommends [authenticating with service principals](../container-registry/container-registry-auth-service-principal.md) when applications or services pull container images in an automated or otherwise unattended manner (headless), as IoT Edge devices do.
137+
138+
To create a service principal, run the two scripts as described in [create a service principal](../container-registry/container-registry-auth-aci.md#create-a-service-principal). These scripts do the following tasks:
139+
140+
* The first script creates the service principal. It outputs the Service principal ID and the Service principal password. Store these values securely in your records.
141+
142+
* The second script creates role assignments to grant to the service principal, which can be run subsequently if needed. We recommend applying the **acrPull** user role for the `role` parameter. For a list of roles, see [Azure Container Registry roles and permissions](../container-registry/container-registry-roles.md)
143+
144+
To authenticate using a service principal, provide the service principal ID and password that you obtained from the first script.
145+
146+
* For the username or client ID, specify the service principal ID.
147+
148+
* For the password or client secret, specify the service principal password.
149+
150+
For an example of launching a container instance with Azure CLI, see [Authenticate using the service principal](../container-registry/container-registry-auth-aci.md#authenticate-using-the-service-principal).
137151

138152
### Use tags to manage versions
139153

articles/storage/blobs/storage-quickstart-blobs-javascript-client-libraries-legacy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ You may find the series of values after each parameter a bit cryptic. These para
8585
Now that the SAS is generated, copy the return value and save it somewhere for use in an upcoming step. If you generated your SAS using a method other than the Azure CLI, you will need to remove the initial `?` if it is present. This character is a URL separator that is already provided in the URL template later in this topic where the SAS is used.
8686

8787
> [!IMPORTANT]
88-
> In production, always pass SAS tokens using SSL. Also, SAS tokens should be generated on the server and sent to the HTML page in order pass back to Azure Blob Storage. One approach you may consider is to use a serverless function to generate SAS tokens. The Azure Portal includes function templates that feature the ability to generate a SAS with a JavaScript function.
88+
> In production, always pass SAS tokens using TLS. Also, SAS tokens should be generated on the server and sent to the HTML page in order pass back to Azure Blob Storage. One approach you may consider is to use a serverless function to generate SAS tokens. The Azure Portal includes function templates that feature the ability to generate a SAS with a JavaScript function.
8989
9090
## Implement the HTML page
9191

12.3 KB
Loading
16.3 KB
Loading

articles/virtual-machines/troubleshooting/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
href: troubleshoot-guide-critical-process-died.md
7979
- name: Critical service failed
8080
href: troubleshoot-critical-service-failed-boot-error.md
81+
- name: VM is unresponsive when applying local users and groups policy
82+
href: troubleshoot-vm-unresponsive-group-policy-local-users.md
8183
- name: Not a bootable disk
8284
href: troubleshoot-guide-not-bootable-disk.md
8385
- name: Reboot loop
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
---
2+
title: Virtual Machine is unresponsive while applying 'Group Policy Local Users & Groups' policy
3+
description: This article provides steps to resolve issues where the load screen is stuck applying a policy during boot in an Azure Virtual Machine (VM).
4+
services: virtual-machines-windows
5+
documentationcenter: ''
6+
author: v-miegge
7+
manager: dcscontentpm
8+
editor: ''
9+
tags: azure-resource-manager
10+
ms.assetid: ff113268-f5bf-4e6a-986e-63b9b0ceff20
11+
ms.service: virtual-machines-windows
12+
ms.workload: infrastructure-services
13+
ms.tgt_pltfrm: na
14+
ms.topic: troubleshooting
15+
ms.date: 04/02/2020
16+
ms.author: v-mibufo
17+
18+
---
19+
20+
# Virtual Machine is unresponsive while applying 'Group Policy Local Users & Groups' policy
21+
22+
This article provides steps to resolve issues where the load screen is stuck applying a policy, during boot, in an Azure Virtual Machine (VM).
23+
24+
## Symptom
25+
26+
When you use [Boot diagnostics](https://docs.microsoft.com/azure/virtual-machines/troubleshooting/boot-diagnostics) to view the screenshot of the VM, you'll see that the screen is stuck loading with the message: *Applying Group Policy Local Users and Groups policy*.
27+
28+
![Alt text: Screen showing Applying Group Policy Local Users and Groups policy loading (Windows Server 2012).](media/troubleshoot-vm-unresponsive-group-policy-local-users/1.png)
29+
30+
Windows Server 2012
31+
32+
![Alt text: Screen showing Applying Group Policy Local Users and Groups policy loading (Windows Server 2012 R2).](media/troubleshoot-vm-unresponsive-group-policy-local-users/2.png)
33+
34+
Windows Server 2012 R2
35+
36+
## Cause
37+
38+
The symptoms of this freeze are caused by a code defect in the Windows Profile Service Dynamic Link Library (*profsvc.dll*).
39+
40+
> [!NOTE]
41+
> This defect applies only on Windows Server 2012 and Windows Server 2012 R2.
42+
43+
### The policy in question
44+
45+
The policy being applied that won't finish its processes is:
46+
47+
* *Computer Configuration\Policies\Administrative Templates\System/User Profiles\Delete user profiles older than a specified number of days on system restart*
48+
49+
This policy will only hang if the following six conditions are true:
50+
51+
* The *Delete user profiles older than a specified number of days on system restart* policy is enabled.
52+
* You have profiles that have met the age requirements to require cleanup.
53+
* You have components that have registered for delete notification for profiles.
54+
* The components make calls (direct or indirect) that need to acquire data from the Service Control Manager (SCM) components of Windows, such as Start, Stop, or Query information about a service.
55+
* You have a service configured to start as *automatic*.
56+
* This service is set to run under the context of a domain account (as opposed to using a built-in account, such as a local system).
57+
58+
### The code defect
59+
60+
The code defect is due to the Service Control Manager (SCM) and the Profile services attempting to apply locks on one another simultaneously. Locks exist to prevent multiple services from making changes on the same data at the same time, which would cause corruption. Ordinarily, multiple lock requests wouldn't cause an issue. However, since this is happening during boot, neither service can complete their processes, as they are stuck waiting upon one another.
61+
62+
### OS Bug 5880648 - Service Control Manager deadlocks with the "Delete user profiles on restart" policy
63+
64+
There are two actions which overlap so that:
65+
66+
* Action 1 acquires the profile lock but has not yet acquired the SCM lock.
67+
68+
**AND**
69+
70+
* Action 2 acquires the SCM lock but has not yet acquired the profile lock.
71+
72+
Once this deadlock occurs, the attempt to acquire the second required lock hangs the action.
73+
74+
### Action 1 - Old profile deletion notification (has **Profile Lock**, needs **SCM Lock**)
75+
76+
1. First, the policy set to delete old profiles acquires an internal profile service lock.
77+
78+
* This lock is there to prevent two threads from interacting with the profiles while the *delete operation* is progress.
79+
80+
2. The policy finds profiles that are old enough to be deleted.
81+
3. As part of the profile deletion, a component that has registered for notifications of the deletions of a profile tries to **start a service**.
82+
4. Prior to starting the service, the Service Control Manager (SCM) needs to acquire an **internal SCM lock** held by threads in **Action 2**.
83+
84+
### Action 2 - Profile load/creation for user specific data (has **SCM Lock**, needs **Profile Lock**)
85+
86+
1. At boot, SCM needs to order all *auto-start* services by their group, as well as any services that those services are dependent upon.
87+
88+
2. **SCM acquires an internal SCM lock** used to control access to starting, stopping, or configuring services as it orders the services.
89+
90+
3. Once the services are in order, the SCM loops through each service and starts it.
91+
92+
4. If the service is running under the context of a domain account, a profile needs to be either loaded or created for the domain account, so that it can store user specific data.
93+
94+
5. This request is sent to the **Profile Service**.
95+
96+
6. The profile service needs access to the **internal lock** acquired in **Action 1**.
97+
98+
## Solution
99+
100+
### Process Overview
101+
102+
1. Create and Access a Repair VM
103+
2. Enable Serial Console and Memory Dump Collection
104+
3. Rebuild the VM
105+
4. Collect the Memory Dump File
106+
107+
> [!NOTE]
108+
> When encountering this boot error, the Guest OS is not operational. You'll be troubleshooting in Offline mode to resolve this issue.
109+
110+
### Create and Access a Repair VM
111+
112+
1. Use [steps 1-3 of the VM Repair Commands](https://docs.microsoft.com/azure/virtual-machines/troubleshooting/repair-windows-vm-using-azure-virtual-machine-repair-commands#repair-process-example) to prepare a Repair VM.
113+
2. Using Remote Desktop Connection connect to the Repair VM.
114+
115+
### Enable Serial Console and Memory Dump Collection
116+
117+
To enable memory dump collection and Serial Console, run the script below:
118+
119+
1. Open an elevated command prompt session (Run as administrator).
120+
2. Run the following commands:
121+
122+
* Enable Serial Console:
123+
124+
`bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON`
125+
126+
`bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200`
127+
128+
3. Verify that the free space on the OS disk is as much as the memory size (RAM) on the VM.
129+
130+
* If there's not enough space on the OS disk, you should change the location where the memory dump file will be created and refer that to any data disk attached to the VM that has enough free space. To change the location, replace `%SystemRoot%` with the drive letter (such as "F:") of the data disk in the below commands.
131+
132+
#### Suggested configuration to enable OS Dump
133+
134+
**Load Broken OS Disk:**
135+
136+
`REG LOAD HKLM\BROKENSYSTEM <VOLUME LETTER OF BROKEN OS DISK>:\windows\system32\config\SYSTEM`
137+
138+
**Enable on ControlSet001:**
139+
140+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f`
141+
142+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f`
143+
144+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f`
145+
146+
**Enable on ControlSet002:**
147+
148+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f`
149+
150+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f`
151+
152+
`REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f`
153+
154+
### Rebuild the VM
155+
156+
Use [step 5 of the VM Repair Commands](https://docs.microsoft.com/azure/virtual-machines/troubleshooting/repair-windows-vm-using-azure-virtual-machine-repair-commands#repair-process-example) to reassemble the VM.
157+
158+
### Collect the Memory Dump File
159+
160+
To resolve this problem, you would need first to gather the memory dump file for the crash and contact support with the memory dump file. To collect the dump file, follow these steps:
161+
162+
#### Attach the OS disk to a new Repair VM
163+
164+
1. Use steps [1-3 of the VM Repair Commands](https://docs.microsoft.com/azure/virtual-machines/troubleshooting/repair-windows-vm-using-azure-virtual-machine-repair-commands#repair-process-example) to prepare a new Repair VM.
165+
166+
2. Using Remote Desktop Connection connect to the Repair VM.
167+
168+
#### Locate the dump file and submit a support ticket
169+
170+
1. On the repair VM, go to windows folder in the attached OS disk. If the driver letter that is assigned to the attached OS disk is F, you need to go to F:\Windows.
171+
172+
2. Locate the memory.dmp file, and then [submit a support ticket](https://portal.azure.com/?#blade/Microsoft_Azure_Support/HelpAndSupportBlade) with the memory dump file.
173+
174+
3. If you are having trouble locating the memory.dmp file, you may wish to use [non-maskable interrupt (NMI) calls in serial console](https://docs.microsoft.com/azure/virtual-machines/troubleshooting/serial-console-windows#use-the-serial-console-for-nmi-calls) instead. You can follow the guide to [generate a kernel or complete crash dump](https://docs.microsoft.com/windows/client-management/generate-kernel-or-complete-crash-dump) file using NMI calls.

0 commit comments

Comments
 (0)