Autodesk CER XML Format Reference (Pre-2025 Products)

Documented structure of the Autodesk CER XML crash report format used by pre-2025 products. Every section, element and attribute, with how reliably each appears in real reports.

This page documents the Autodesk CER crash report format used by products before 2025: the human-readable dmpuserinfo.xml file. For 2025 and newer, see the CER v7 .pb format reference.

What follows is the format as it exists in real crash reports from Civil 3D, AutoCAD, Plant 3D, Revit and Desktop Connector, not a spec Autodesk published. Each field carries a presence rating so you know what to expect before you write a parser: Always means every report has it, Usually means most do, Common means roughly half, Sometimes means a minority, Rare means do not count on it. Knowing a field exists is worth little if it is almost never there.

The shape of the file

One crash, one file, everything inside it. Root element is <CERInfo>, with two attributes: @ClientSemVersion (dates the CER client build, e.g. 6.3.2+20230824) and @ClientVersion (major version, 6 for this format). Both always present.

dmpuserinfo.xml<CERInfo ClientSemVersion=”6.3.2+…” ClientVersion=”6″>ProcessInfomemory at crash (hex),ErrNo, LastWin32ErrorAlwaysUserInfoemail, CrashID, CrashDate,WorkingDocument,open-files childrenAlwaysupipackageevery installed product,requestingapp = crasher,upi_error when inventory failsAlwaysOSInfo / LocaleInfoWindows build, kernel,codepages, WinINetAlwaysCrashHistoryCreated, BackendFailed,BackendTimeout(upload reliability)AlwaysAppInformation /ProductInformationproduct + build, sessioncounts, uptime, GsConfigAlwaysAppCDATACommand chain, first-chancemanaged stack,GDI / handle tailAlwaysDxDiagInfosystem (model, CPU, RAM)+ installed GPU, driverAlwaysGraphicsInfo /GraphicsInfoRawactive D3D adapter + capsUsuallyMC3Info / DeviceInfoanalytics session +hashed device identityAlwaysOpenGLInfoGL renderer(muxless laptop signal)CommonRuntimeInformationinline managed exception(use CDXStackDump*.xml)RarePresence reflects how reliably each section appears in real crash reports.Companion files in the same folder: CDXStackDump<guid>.xml (managed exception detail), service_config.xml (uploader config).Also always present: WininetInfo, VideoDriverInfo, MC3Info, DeviceInfo. Usually: GraphicsDriverInfo. Vestigial: LicenseInfo, top-level GDI.

Encoding is UTF-8 XML, sometimes with a BOM, mixing attributes, elements and CDATA. Files are consistently well formed. Read it with [xml](Get-Content -Raw) in PowerShell or ElementTree in Python. DxDiag and GraphicsInfoRaw children are CDATA wrapped, so use a CDATA-aware getter with an InnerText fallback.

Section index

SectionPresenceCarries
ProcessInfoAlwaysmemory and error state at crash
UserInfoAlwaysidentity, crash id, drawing, open files
upipackageAlwaysinstalled product inventory, crashing product flagged
OSInfoAlwaysWindows version and kernel
LocaleInfoAlwaysuser and system locale
CrashHistoryAlwaysCER upload reliability counters
WininetInfoAlwaysWinINet version
MC3InfoAlwaysanalytics session and user hash
DeviceInfoAlwayshashed device identity
ProductInformationAlwaysplatform build, session counts, GsConfig
AppCDATAAlwayscommand chain, managed stack, GDI tail
DxDiagInfoAlwayssystem and installed GPU
VideoDriverInfoAlwaysAMD packaging version
AppInformationUsuallyfriendly product name and build
GraphicsInfoUsuallyactive D3D adapter as a text blob
GraphicsInfoRawUsuallysame, as structured children
GraphicsDriverInfoUsuallyAutoCAD hdi driver
OpenGLInfoCommonactive GL renderer
RuntimeInformationRareinline managed exception
LicenseInfoVestigiallicensing state
GDI (top level)Vestigialobject counts

ProcessInfo

<ProcessInfo AvailPageFile="1BE15D000" AvailPhysicalMem="3522A1000"
AvailVirtualMem="7FEE0DE88000" CerMode="1" ErrNo="2" LastWin32Error="0"/>
AttributePresenceHow to read it
@AvailPageFileAlwayshex bytes, convert base 16
@AvailPhysicalMemAlwayshex bytes
@AvailVirtualMemAlwayshex bytes
@CerModeAlwaysCER client mode flag
@ErrNoSometimesCRT errno at crash
@LastWin32ErrorSometimesWin32 GetLastError

UserInfo

<UserInfo SerialNum="000-00000000" UserCanBeContacted="yes" ComputerName="PC-11617">
<UserName value=""/> <UserPhone value=""/> <UserEmail value="user@example.com"/>
<UserSubscription email="user@example.com" macID="{GUID}" userId=""/>
<ErrorDescription AllowRT="1" CrashDate="06/27/2025" CrashID="1520c2d8-..." id="6"/>
<Metrics CalendarUptime="2206861177" RequiredSend="0" WaitDur="25000"/>
<WorkingDocument name="Hydraulics_Working_RoadsideDrainage.dwg"/>
<Some.Other.File.dwg name="..." active="true"/>
</UserInfo>
PathPresenceNotes
@SerialNumAlwaysalways masked as 000-00000000
@UserCanBeContactedAlwaysyes or no
@ComputerNameRarenewer clients only. The only machine name in the XML
UserName@valueAlwaysusually empty. The folder name is the canonical username
UserPhone@valueAlwaysusually empty
UserEmail@valueAlwaysuser email
UserSubscription@emailAlwayssubscription email
UserSubscription@macIDAlwayssubscription machine GUID
UserSubscription@userIdAlwaysusually empty
ErrorDescription@CrashDateAlwaysMM/DD/YYYY
ErrorDescription@CrashIDAlwayscrash GUID, joins the backend CER number
ErrorDescription@AllowRTAlwaysround trip allowed
ErrorDescription@idAlwayserror description template id
Metrics@CalendarUptimeAlways100 ns ticks. Divide by 1e7 then 3600 for hours
Metrics@RequiredSendAlwaysCER submission policy flag
Metrics@WaitDurAlwaysdialog wait in milliseconds
WorkingDocument@nameUsuallythe active drawing, name or full path
child <*.dwg|dwt|dxf|dgn name= active=>variesthe open-files list. The element tag is the filename, so match on the tag, not an XPath. @active="true" wins

That open-files list is the one thing the newer format has no answer for. It is also where a project number comes from once you strip the filename down, which is what lets crash data join drawing audit findings.

upipackage

<upipackage>
<upivalue requestingapp="true" type="product" version="1.0">
<level id="CIV3D" name="productline">
<level id="2024" name="release">
<level id="{28B89EEF-7100-0409-2102-CF3F3A09B77D}" name="master">
<level id="13.6.2053.0" name="build"/>
... one upivalue per installed product ...
<upi_error .../>
</upipackage>
PathPresenceNotes
upivalueAlwaysone per installed product
upivalue@requestingappon one entry"true" marks the product that crashed
upivalue@type, @versionAlwaysentry type and schema version
level[@name="productline"]@idAlwaysproduct code. Seen: CIV3D, ACD, ARCHDESK, ARDES, VEHTRK, RVT, PLC0000013, PLC0000022, PLC0000037
level[@name="release"]@idAlwaysrelease year. Drives the 2020 side-by-side check
level[@name="master"]@idAlwaysmaster GUID. Encodes the release: 5100 is 2022, 7100 is 2024, 9100 is 2026
level[@name="build"]@idAlwaysthe build number, e.g. 13.6.2053.0
upi_errorSometimesinventory collection failed. Blank product here means “failed”, not “none installed”

Only the requestingapp="true" entry is the crashing product. Newer builds routinely appear in this list as merely installed, so never take the highest version you see as the one that crashed.

OSInfo, LocaleInfo, WininetInfo

PathPresenceNotes
OSInfo@BuildNumberAlwaysWindows display build, e.g. 26100
OSInfo@MajorVersion, @MinorVersionAlwaysalways 10.0 on Win10 and Win11. Use BuildNumber to tell them apart
OSInfo@KernelBuildNum, @KernelMajorVersion, @KernelMinorVersion, @KernelReleaseNumAlwayskernel identity. ReleaseNum is the UBR patch level
OSInfo@PlatformId, @CSDVersion, @ServicePackMajor, @ServicePackMinor, @SuiteFlagsAlwayslegacy OS descriptors
OSInfo@*_Legacy (BuildNumber, CSDVersion, MajorVersion, MinorVersion, PlatformId, ServicePackMajor, ServicePackMinor, SuiteFlags)Alwayscompatibility-shimmed twins, e.g. MajorVersion_Legacy 6, BuildNumber_Legacy 9200. Ignore these, use the non-Legacy ones
LocaleInfo/LocalUserDefault and LocalSystemDefault, each with @ICountry, @IDefaultAnsiCodepage, @IDefaultCodepage, @IDefaultCountry, @IDefaultLanguage, @ILanguageAlwaysconstant across a single-locale fleet
WininetInfo@WininetBuildNum, @WininetMajorVersion, @WininetMinorVersion, @WininetReleaseNumAlwaysWinINet version block

CrashHistory, MC3Info, DeviceInfo

PathPresenceNotes
CrashHistory@CreatedAlwaysreports created on this machine
CrashHistory@BackendFailedCommonuploads that failed
CrashHistory@BackendTimeoutCommonuploads that timed out
CrashHistory@BackendProcessingSometimesuploads still in flight
CrashHistory@BackendCompletedRareconfirmed uploads
MC3Info@sessionIdAlwaysanalytics session GUID
MC3Info@userIdAlwaysthree SHA-256 hashes joined with underscores
DeviceInfo@DeviceIDv2Alwaysthe same triplet joined with ampersands. Joins the .pb SP/DEVICEID2

When BackendFailed or BackendTimeout are non-zero, crash counts are floors rather than totals. This block has no equivalent in the newer format.

AppInformation, ProductInformation, GsConfig

PathPresenceNotes
AppInformation@name, @versionUsuallyfriendly product and build, e.g. Autodesk Civil 3D 2024 / 13.6.2053.0
ProductInformation@nameAlwaysplatform name, usually AutoCAD
ProductInformation@build_versionAlwaysplatform build, e.g. U.182.0.0(x64)
ProductInformation@registry_versionUsuallye.g. 24.3
ProductInformation@install_id_stringUsuallye.g. ACAD-7100:409. Encodes release and locale
ProductInformation@git_commit_idUsuallybuild commit hash
ProductInformation@registry_localeIDAlwayse.g. 1033
ProductInformation@current_session_lengthAlwaysseconds into the session at crash
ProductInformation@session_start_countAlwayssessions started
ProductInformation@session_clean_close_countAlwaysclean closes. The ratio is your stability signal
ProductInformation@uptimeAlways100 ns ticks
ProductInformation@otherCount, @otherUptimeSometimesother-product session counters
ProductInformation@otherRarerarely populated
ProductInformation@version_labelRarerarely populated
GsConfig@certification, @versionUsuallyrender path certification, e.g. Dx12
GsConfig/Card@name, @driverUsuallythe render device the graphics system reports
GsConfig/VirtualDevice/CurrentUsuallyactive virtual device, e.g. “Dx12”
GsConfig/Settings/*UsuallyHWFeatureLevel, SWFeatureLevel, HWAccelerationAvailable, HWAccelerationEnabled, HWAccelerationRecommended. Values carry literal quote characters
GsConfig/Effects/EffectUsuallyeach with @name @available @enabled @recommended. Names: ACAD_2DRetainMode, ACAD_2DRetainModeLevel, ACAD_AdvancedMaterial, ACAD_FastShaded, ACAD_FullShadows, ACAD_GlowHighlighting, ACAD_GPUHatch, ACAD_GPULineType, ACAD_LineFading, ACAD_LineSmoothing, ACAD_PerPixelLighting, ACAD_TextureCompression, ACAD_WhipArc
GsConfig/GDI/*UsuallyGDIOBJECTS, USEROBJECTS, GDIOBJECTSPEAK, USEROBJECTSPEAK

AppCDATA

A CDATA payload with a loose structure. Every part of it is optional.

Command: LASTCMD;previous;previous... <- first token is your last command
Clr Data:
-----CLR Version Info:
CBS / Install / InstallPath / Release / Servicing / TargetVersion / Version
-----Current Stack: <- usually empty
-----Last Unhandled Exception: <- usually empty
-----Last 3 'first chance' exceptions:
-----Last-0 'first chance' exception:
System.SomeException: message\r\r\n at Namespace.Method(...)
-----Last-1 ...
-----Last-2 ...
GDI_Objects:1983 User_Objects:1258 Process_Handles:3099
ValueWhere
Last commandfirst token after Command:, up to the first semicolon
Command chainthe whole Command: line
CLR version block-----CLR Version Info:, includes InstallPath and .NET version
First-chance exceptions-----Last-0/1/2 blocks, type and message
Top framethe at ... line after each exception
GDI objects, user objects, process handlesthe tail line

Three traps live in that block. The exception line and its at frame are separated by a doubled carriage return, so a regex written for a single one silently drops every top frame. First-chance exceptions are the last three seen in the session, not the crash chain, so they may be handled and unrelated. And a FileNotFound on an XmlSerializers assembly is .NET probing for an optional pre-generated DLL, not evidence of a broken install. I have made that call wrong in print before, so learn it from me instead of from your own bad ticket.

DxDiagInfo

All children are CDATA wrapped and always present.

GroupChildren
SystemInformationOperatingSystem, Language, SystemManufacturer, SystemModel, BIOS, Processor, SystemMemory, PageFile, FullDirectXVersion, DxDiagVersion
GraphicsDeviceInfoManufacturer, ChipType, DACType, VendorID, DeviceID, SubSystemID, RevisionID, GraphicsHWMemory, DisplayMode, GraphicsDriverFile, DriverFileVersion, DriverDate, DriverSigned, DriverSignedValid, WHQLLevel, DxDiagWHQLLevel, DirectXVersion, DDIVersion, DDIVersionNumber

GPU class comes from VendorID: 0x10DE NVIDIA, 0x1002 AMD, 0x8086 Intel (Arc only when ChipType says so), 0x1414 Microsoft Basic Render.

GraphicsInfo, GraphicsInfoRaw, GraphicsDriverInfo, VideoDriverInfo, OpenGLInfo

PathPresenceNotes
GraphicsInfo@InfoType + text blobUsuallyusually D3D9Config. The blob repeats the fields below as key: value lines
GraphicsInfoRaw@InfoTypeUsuallysame content as structured children
GraphicsInfoRaw identity childrenUsuallyDriver, DriverVersion, Description, DeviceName, VendorId, DeviceId, SubSysId, Revision, WHQLLevel, DeviceType, AdapterOrdinal, MasterAdapterOrdinal, AdapterOrdinalInGroup, NumberOfAdaptersInGroup
GraphicsInfoRaw capability childrenUsuallythe full D3D9 caps set: Caps, Caps2, Caps3, Presentation, Cursor, Dev, Dev2, PrimitiveMisc, Raster, ZCmp, SrcBlend, DestBlend, AlphaCmp, Shade, Texture, TextureFilter, CubeTextureFilter, VolumeTextureFilter, TextureAddress, VolumeTextureAddress, Line, MaxTextureWidth, MaxTextureHeight, MaxVolumeExtent, MaxTextureRepeat, MaxTextureAspectRatio, MaxAnisotropy, MaxVertexW, GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom, ExtentsAdjust, Stencil, FVF, TextureOp, MaxTextureBlendStages, MaxSimultaneousTextures, VertexProcessing, MaxActiveLights, MaxUserClipPlanes, MaxVertexBlendMatrices, MaxVertexBlendMatrixIndex, MaxPointSize, MaxPrimitiveCount, MaxVertexIndex, MaxStreams, MaxStreamStride, VertexShaderVersion, MaxVertexShaderConst, PixelShaderVersion, PixelShader1xMaxValue, DeclTypes, NumSimultaneousRTs, StretchRectFilter, VertexTextureFilter, MaxVShaderInstructionsExecuted, MaxPShaderInstructionsExecuted, MaxVertexShader30InstructionSlots, MaxPixelShader30InstructionSlots. Device capability data, no diagnostic value
GraphicsDriverInfo@DriverUsuallyAutoCAD hdi driver. acaddm16.hdi is 2024, acaddm17.hdi is 2025 and 2026
VideoDriverInfo/ATIPackagingVersionAlwaysAMD package version, or “No value found”
OpenGLInfo@Renderer, @Vendor, @VersionCommonthe active GL renderer

Intel in OpenGLInfo while NVIDIA sits in GsConfig/Card is the muxless laptop signature. Treat it as an architecture indicator, not proof of causation.

RuntimeInformation and LicenseInfo

PathPresenceNotes
RuntimeInformation@version, @DeobfuscationRequired, @XmlBasedBucketingRareblock metadata
Exception@type, Exception/MessageRaremanaged exception type and message
Exception/StackTrace/MethodRareone element per frame
Exception/InnerException (nested)Rareeach with its own Message and StackTrace
LicenseInfo/FeatureName, FeatureVersion, LicenseBehavior, LicenseExpiration, LicenseUsageVestigiallegacy licensing block
top-level GDI@Objects, @ObjectsPeak, @UserObjects, @UserObjectsPeakVestigialuse GsConfig/GDI instead

The two companion files

CDXStackDump<guid>.xml appears alongside some crashes, sometimes more than one per folder. Each is a standalone RuntimeInformation document with the full managed exception: Exception@type, Message, StackTrace/Method per frame, and nested InnerException chains that can go several levels deep. This is where the detailed managed exception went when it stopped appearing inline. If the sidecar is there, parse it and ignore the rare inline block.

service_config.xml is the uploader’s own configuration: server/server_url, network/throttle_bytes_per_second, network/throttle_wait_timeout_seconds, network/disable_cert_verification, task/retry_count, task/retry_duration_seconds, task/abort_after_days. No crash content.

Parsing rules worth pinning to the wall

  1. Memory attributes are hex. Uptimes are 100 ns ticks. CrashDate is MM/DD/YYYY.
  2. Crash time comes from the file write time. The folder name is the collection date, which is not the same thing.
  3. DxDiag and GraphicsInfoRaw values are CDATA. GsConfig setting values carry literal quote characters.
  4. Open-files children are matched by element tag, because the tag is the filename.
  5. For the managed exception, go AppCDATA first, then CDXStackDump, then the rare inline RuntimeInformation.
  6. In a folder holding both XML and .pb files, treat the XML as authoritative for identity and let the .pb add the faulting module.

What this format has that v7 does not

The multi-file open-files list. The CrashHistory upload counters. The OpenGL renderer. First-class username, email and phone fields. And the upi_error signal that tells you inventory collection failed rather than leaving you to guess.

What it lacks, and v7 has: the faulting native module by name, access violation direction and null-pointer flag, a per-machine crash counter, and the user’s own typed description of what they were doing. That side is on the v7 .pb reference page.


Reference pages get updated rather than replaced. If a field moves or Autodesk changes the client, this page changes with it.

Cheers, Shaan