Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PresentMon crashes with Windows 19H1 Mixed Reality #61

Open
jenatali opened this issue Mar 20, 2019 · 1 comment
Open

PresentMon crashes with Windows 19H1 Mixed Reality #61

jenatali opened this issue Mar 20, 2019 · 1 comment
Assignees
Labels
PresentMon-ConsoleApplication Relates to the console application (PresentMon/)

Comments

@jenatali
Copy link
Collaborator

Running on the latest Windows Insider builds, PresentMon crashes when running with mixed reality providers in a mixed reality scenario.

@theZMan
Copy link

theZMan commented Apr 12, 2019

Crash only occurs when running DEBUG version of PresentMon with the -include_mixed_reality parameter running on 19H1 insider build (tested on build 18362)

It appears that in the 19H1 we never see the OnTimePresentationTiming or LatePresentationTiming events which ends up causing an assert(). There is no obvious replacement event in the trace. @jenatali and @sebmerry to investigate.

Analysis:

The Assert is because Completed is false here:

LateStageReprojectionEvent::~LateStageReprojectionEvent()
{
    assert(Completed || gMixedRealityTraceConsumer_Exiting);
}

Completed would normally be set here but FinalState is always Unknown

void MRTraceConsumer::CompleteLSR(std::shared_ptr<LateStageReprojectionEvent> p)
{
    if (p->FinalState == LateStageReprojectionResult::Unknown) {
        return;
    }

    if (p->Completed) {
        p->FinalState = LateStageReprojectionResult::Error;
        return;
    }

    p->Completed = true;
    {
        auto lock = scoped_lock(mMutex);
        mCompletedLSRs.push_back(p);
    }
}

It looks like we are seeing multiple of these
else if (taskName.compare(L"LsrThread_BeginLsrProcessing") == 0)
without any of these
else if (taskName.compare(L"OnTimePresentationTiming") == 0 || taskName.compare(L"LatePresentationTiming") == 0)
which is the only possible place that FinalState could be set to something valid

@JeffersonMontgomery-Intel JeffersonMontgomery-Intel added the PresentMon-ConsoleApplication Relates to the console application (PresentMon/) label Aug 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PresentMon-ConsoleApplication Relates to the console application (PresentMon/)
Projects
None yet
Development

No branches or pull requests

3 participants