azure-remote-rendering: [Remote rendering problem] Native Cpp Not working

Describe the problem

I have altered the account keys, account ID and domain to the correct domains and put in my assets SAS URL. Yesterday I was able to get an active rendering session show up on the azure dashboard(it didn’t work), however today I’m not even getting a active rendering session show up on the dashboard. I am getting an exception thrown at Exception thrown at 0x00007FF7D38A6598 in HolographicApp.exe: 0xC0000005: Access violation writing location 0x00007FF8E5EBF7D0.

I am using the hololens 2 and visual studio 2019 however, I have left the project in VS2017 v141 toolset. ARM64 and release mode.

Provide additional information

Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: winrt::hresult_class_not_available at memory location 0x000000AB355FCFE8.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: 0x40080202: WinRT transform error (parameters: 0x0000000080040111, 0x0000000000000000, 0x0000000000000027, 0x000000AB355FCC10).
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: WinRT originate error - 0x80040111 : 'ClassFactory cannot supply requested class'.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: winrt::hresult_class_not_available at memory location 0x000000AB355FCD68.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: 0x40080202: WinRT transform error (parameters: 0x0000000080040111, 0x0000000000000000, 0x0000000000000027, 0x000000AB355FC990).
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\PerceptionDevice.dll'. 
'HolographicApp.exe' (Win32): Loaded 'B:\Windows\System32\DriverStore\FileRepository\qcdx_ffu850.inf_arm64_3f3ec3a0cb26c5d1\qcdx11arm64um850.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\forwarders\advapi32.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\FWPUCLNT.DLL'. 
'HolographicApp.exe' (Win32): Loaded 'B:\Windows\System32\DriverStore\FileRepository\qcdx_ffu850.inf_arm64_3f3ec3a0cb26c5d1\qcdxarm64compiler850.DLL'. 
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: WinRT originate error - 0x80040111 : 'ClassFactory cannot supply requested class'.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: winrt::hresult_class_not_available at memory location 0x000000AB355FD1D8.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: 0x40080202: WinRT transform error (parameters: 0x0000000080040111, 0x0000000000000000, 0x0000000000000027, 0x000000AB355FCE00).
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\Windows.StateRepositoryClient.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\schannel.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\TextShaping.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\BCP47mrm.dll'. 
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: WinRT originate error - 0x80040111 : 'ClassFactory cannot supply requested class'.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: winrt::hresult_class_not_available at memory location 0x000000AB355FECF8.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: 0x40080202: WinRT transform error (parameters: 0x0000000080040111, 0x0000000000000000, 0x0000000000000027, 0x000000AB355FE920).
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\mskeyprotect.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\ntasn1.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\ncrypt.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\ncryptsslp.dll'. 
'HolographicApp.exe' (Win32): Loaded 'C:\Windows\system32\cryptnet.dll'. 
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: WinRT originate error - 0x80040111 : 'ClassFactory cannot supply requested class'.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: winrt::hresult_class_not_available at memory location 0x000000AB355FE348.
Exception thrown at 0x00007FF90A1939EC in HolographicApp.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FF90A1939EC (KernelBase.dll) in HolographicApp.exe: 0x40080202: WinRT transform error (parameters: 0x0000000080040111, 0x0000000000000000, 0x0000000000000027, 0x000000AB355FDF70).
Exception thrown at 0x00007FF7D38A6598 in HolographicApp.exe: 0xC0000005: Access violation writing location 0x00007FF8E5EBF7D0.

If you have them, please provide either or both of the following:

  • The sessionId (See here)
  • An MS-CV code (See here)

Additional context

Add any other context about the problem here.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 31 (18 by maintainers)

Most upvoted comments

Here is a new docs paragraph with some code how to create a new entity: https://docs.microsoft.com/en-us/azure/remote-rendering/concepts/entities#create-an-entity

Two things:

  1. The new entity must be created, rather than being a local variable. Creating a new entity is a member function on the RemoteManager object (RemoteManager::CreateEntity)

The ‘setter’ for the position property is currently counter-intuitive, so it should be rather: e->Position(a); instead of e->Position() = a;

(this may be fixed in the future. Personally I prefer when getters and setters in C++ are properly named as GetPosition/SetPosition)

It seems the docs are lacking a paragraph how to create a new entity here: https://docs.microsoft.com/en-us/azure/remote-rendering/concepts/entities

I will add that doc…

Is it possible to scale the geometry that is being rendered at azure? The model I imported was huge!

There are basically two options:

  • You can scale the asset at conversion time
  • You can dynamically scale objects at runtime if you apply scaling to the root entity. When you call LoadModel, you can pass a parent entity (it is null in the C++ sample) and if that entity is already scaled, the model will appear scaled right after loading.

In your case, it sounds a bit like an asset problem, so I would rather do this at conversion time. Here is how to apply scaling at conversion time: https://docs.microsoft.com/en-us/azure/remote-rendering/how-tos/conversion/configure-model-conversion#geometry-parameters

Cheers, Florian

Glad to hear it works now! I’ll log a ticket for the intermittent nullptr crash for further investigation.

fwiw, you can query the Azure status here: https://status.azure.com/status

I have seen problem has been reported today as well and it is under investigation

You can ignore the toolId, it does not serve a specific purpose outside logging. However, it must not be empty.

yes, the sample code will be fixed and part of the next SDK. If it was only a few lines of code, I would post it here, but it is actually more 😉

Hello and thanks for your report! We have identified a problem in the session creation logic of the native C++ sample. It tries to connect to the runtime while the session is still starting up. It is unfortunately not a single line fix, so this will be fixed with the next SDK update that will be released within the next days.

However, there is a code path in the HL sample that does work today: If you specify a valid session ID through this member:

    m_sessionOverride = ""; // If there is a valid session ID to re-use, put it here. Otherwise a new one is created

inside function HolographicAppMain::HolographicAppMain

To create a valid session using your local PC, you can use the powershell script RenderingSession.ps1 which is in the repo as well. Note that you need to put in your credentials into the sibling file arrconfig.json. When you run the script, it will start a session (it may take a few minutes) and output the session ID to the powershell console. You can copy that ID and paste it into the m_sessionOverride member and then compile&deploy the sample again. See also this chapter: https://docs.microsoft.com/azure/remote-rendering/samples/powershell-example-scripts

Sorry for the inconveneience!. Florian