Community-shared tools & configurations for AppSense Environment Manager, Application Manager and Performance Manager

How to Debug AppSense Memory Dumps From Crashed Agents

When an AppSense agent crashes, the visible symptom may be a frozen application, a failed logon, or a Windows event reporting an application fault. The useful evidence is usually inside the memory dump, where the operating system records the process state, loaded modules, thread stacks, exception details, and portions of the heap. Reading that evidence systematically can turn an intermittent desktop complaint into a reproducible technical issue.

This process is relevant to AppSense Environment Manager, Application Manager, Performance Manager, and related User Workspace Management components running on Windows endpoints. Australian organisations often support a mixture of corporate laptops, virtual desktops, branch-office devices, and home workers connected through NBN services. That variety makes disciplined dump collection important because the same agent can behave differently across Windows builds, security policies, Office versions, and hardware profiles.

Prepare The Endpoint Before Collecting Evidence

Start by recording the exact AppSense or Ivanti component, agent version, Windows edition and build, architecture, and whether the device is physical or virtual. Capture the affected user’s logon time, the action that preceded the crash, and whether the failure occurs during startup, application launch, policy refresh, or session logoff. A timestamp in Australian Eastern Standard Time or Australian Eastern Daylight Time should be converted carefully when correlating endpoint, domain controller, and management-server logs.

Check Windows Event Viewer under Windows Logs > Application and Applications and Services Logs. Look for Event ID 1000, which commonly records an application fault, and Event ID 1001, which can indicate Windows Error Reporting data. Record the faulting application, faulting module, exception code, and fault offset. These fields are clues rather than a diagnosis: an ntdll.dll or kernelbase.dll entry often means the failure surfaced in a Windows component, not that Windows itself caused the original problem.

Before reproducing the fault, confirm that the endpoint has sufficient free disk space and that dump capture is permitted by policy. A full user dump can be large, particularly for a 64-bit process with many loaded modules. Select a protected local folder with restrictive NTFS permissions, then move the file through an approved evidence-handling process. Australian organisations should account for the Privacy Act 1988 and internal data-retention rules because a dump may contain usernames, file paths, document fragments, tokens, and other personal information.

Configure A Reliable Dump Capture Method

Windows Error Reporting can create user-mode dumps through registry configuration, while ProcDump from Microsoft Sysinternals is often more practical when you need to target a particular executable or capture a dump after a defined number of crashes. A full dump provides the broadest view of process memory; a minidump is smaller but may omit heap data needed to diagnose corruption, deadlocks, or a problematic extension.

For a controlled investigation, install the approved ProcDump version and use a command appropriate to the executable under examination. A pattern such as procdump -ma -e -w AgentProcess.exe C:\CrashDumps tells ProcDump to wait for the process, create a full dump when an unhandled exception occurs, and write it to the chosen directory. The process name must match the actual AppSense service or agent executable, so verify it in Task Manager, Services, or the product documentation before using the command.

If the process is a Windows service, run the capture tool with suitable administrative rights and test it on a non-production endpoint first. Endpoint security products may block debugger-style monitoring, inject their own DLLs, or quarantine the dump directory. Record any exclusions and their expiry time. In a Melbourne office, a test machine may follow a different security baseline from a Sydney head office laptop, so compare policy assignments rather than assuming the environments are identical.

Use a single controlled reproduction where possible. Note the user action, application name, policy change, and elapsed time before the crash. If the failure is intermittent, collect two or three dumps from the same build rather than mixing files from different agent versions. Consistent timing and matching metadata make it easier to distinguish a deterministic defect from an environmental conflict.

Open The Dump In WinDbg

Install WinDbg from the Microsoft Store or an approved Windows debugging package, then open the .dmp file with the correct symbol configuration. Microsoft public symbols can be configured with a symbol path such as:

srv*C:\Symbols*https://msdl.microsoft.com/download/symbols

Use a local cache so repeated analysis does not depend on a slow branch connection or a temporary outage. Third-party AppSense modules may have limited public symbols. If the vendor supplies private symbols or a matching diagnostic build, keep them with the case material and ensure they correspond exactly to the binary in the dump.

Begin with:

!analyze -v

Review the exception code, process name, faulting thread, probable cause, and stack text. Common exception codes include 0xc0000005 for an access violation, 0xc0000374 for heap corruption, and 0xc0000409 for a stack buffer overrun or fast-fail condition. The code indicates the failure category, but it does not automatically identify the faulty product. A third-party DLL appearing near the top of a stack is more useful when its version, load path, and relationship to the failing operation are also verified.

Inspect all threads rather than relying on the first stack:

~* kb

The command displays a backtrace for every thread. Look for repeated waits, loader activity, registry operations, COM calls, and calls into AppSense policy or application-control modules. A crash may occur on one thread while another thread holds the lock or performs the operation that triggered corruption. Commands such as lmvm module_name show a module’s path, timestamp, and version, while k or kv provides increasingly detailed stack output.

When symbols are poor, avoid overinterpreting raw addresses. First confirm that the dump architecture matches the process, then reload symbols with .reload /f and inspect the module list. A stack filled with ??? can result from missing symbols, a damaged dump, compiler optimisation, or an invalid instruction pointer. It is evidence of limited visibility, not proof that the AppSense agent is responsible.

Separate Agent Faults From Integration Conflicts

AppSense agents operate alongside Office add-ins, antivirus filters, browser security controls, credential providers, shell extensions, and other management software. If the crash appears while opening Outlook, Word, or Excel, compare the loaded module list with the application’s add-ins and security integrations. A useful reference on this type of investigation is the Office add-in review, which can help frame compatibility and control questions before changing production policy.

Check whether the same AppSense policy reproduces the issue with a clean user profile, a different Office channel, or a workstation where optional add-ins are disabled. Temporarily isolating one factor at a time is safer than removing several controls together. Record every change, including policy revision, reboot status, user profile state, and security-agent version, because a successful test without that context cannot be reliably repeated.

Heap corruption deserves special care. The crashing instruction may be far removed from the code that damaged the heap. Use page heap or Application Verifier only in a lab or on a designated test device because these tools can increase memory use and alter timing. If the crash disappears after an add-in, filter driver, or shell extension is removed, treat that as a strong lead rather than a final verdict. Confirm it with a clean reproduction and matching dumps.

Performance symptoms can also be mistaken for crashes. High private bytes, handle growth, or a blocked thread may produce an unresponsive agent before Windows terminates it. Compare several dumps over time and inspect process metrics from Performance Monitor. A steady increase in handles or committed memory points towards a leak or resource exhaustion, while identical exception addresses across clean reproductions suggest a repeatable code path.

Package Findings For Vendor Or Community Support

A useful case contains the original dump, a compressed copy if permitted, the WinDbg output, and a concise timeline. Include the endpoint type, Windows build, AppSense product and version, affected application, policy revision, security software, Office build, and exact reproduction steps. Remove unrelated personal data where possible, but preserve filenames, module paths, and timestamps that are essential to the investigation.

Use this evidence checklist before uploading or sharing:

Describe the failure in observable terms rather than writing that “the agent is broken.” For example, state that the Environment Manager agent terminates 20 to 30 seconds after Outlook starts, only on Windows 11 devices with a particular Office build, and that the dump shows an access violation in a third-party module. A well-structured report resembles the clarity expected when structuring a technical question: establish the conditions, show the evidence, and separate facts from assumptions.

Protect the dump during transfer. Use the AppSense Exchange tools library to locate approved utilities and diagnostic resources, then follow your organisation’s process for access control and retention. Do not place an unrestricted dump in a public forum. For Australian teams, this is especially important when support staff work across state offices, offshore service desks, or managed-service providers with different data-handling arrangements.

When posting to a community forum, include a redacted WinDbg summary and the investigation steps already completed. State whether the issue reproduces with a new profile, whether disabling a specific integration changes the result, and whether the crash occurs on physical devices, virtual desktops, or both. This helps community advisors focus on version compatibility, known defects, policy interactions, and missing diagnostics rather than repeating basic collection steps.

Turn A Stack Trace Into A Tested Resolution

A dump is valuable when it supports a testable hypothesis. If the evidence points to a policy extension, reproduce with that policy removed or simplified. If an Office add-in appears in the stack, test the same Office build with the add-in controlled separately. If a security module is loaded immediately before the fault, coordinate a narrowly scoped exclusion with the security team and measure the result. Avoid broad exclusions that weaken endpoint protection across an entire Australian tenant.

Compare the failing endpoint with a working endpoint using the same agent release, Windows cumulative update, Office channel, and policy set. Differences in architecture, language pack, time zone, user profile, or virtualisation platform can explain apparently inconsistent results. In Brisbane, for example, a device may remain on AEST while systems in Sydney or Melbourne switch to daylight saving; an incorrect timestamp conversion can make matching logs appear unrelated.

After applying a change, collect a fresh dump or confirm a meaningful period without recurrence. Document the old and new configuration, the test population, and the observation window. A fix that works on one laptop for an afternoon is a lead, not a production resolution. Validate across representative locations, including remote users and branch devices, before closing the incident.

The strongest escalation includes a reproducible sequence, matching dumps, symbol-aware analysis, and a clear request. Ask the vendor or community whether the exception pattern matches a known defect, whether a hotfix or later build addresses it, and which additional logging is safe to enable. Keep the original evidence unchanged, label derivative files clearly, and retain the final analysis with the incident record so future administrators can recognise the same signature quickly.

Collect the dump, preserve its context, and analyse it with matching binaries and symbols. Then share a redacted, evidence-led case through the AppSense Exchange community or your approved support channel so the next troubleshooting step is based on facts rather than guesswork.