0X00001A90

ERROR_TRANSACTIONAL_CONFLICT (0x00001A90): Fix Windows Transaction Name Collisions

This error means two processes tried to use the same NTFS transactional name at once. Kill the stale handle, then check your KTM/minifilter drivers.

Quick answer

ERROR_TRANSACTIONAL_CONFLICT means a process tried to open, create, or enlist in an NTFS transactional resource using a name (or GUID) that's already held by another live transaction. You fix it by finding the process holding the name, ending it, and clearing the KTM transaction log for that resource manager.

What's actually happening

Windows Transactional NTFS (TxF) and the Kernel Transaction Manager (KTM) let a file operation roll back like a database commit. That's great for installers, backup agents, and a few legacy COM+ apps. The catch: KTM names are kernel-scoped. If two writers grab the same name at the same time, one of them wins and the other gets 0x00001A90.

I've seen this trip up two scenarios more than any other. First, two copies of the same installer running because a scheduled task fired while a user was double-clicking the EXE. Second, a backup product (Veeam, Backup Exec, or an old Arcserve agent) that leaves a transaction handle open after a crash, then the next run collides with the ghost. Antivirus minifilters that wrap TxF calls can do it too. Windows Defender usually behaves. Third-party endpoint tools often don't.

The error isn't a corruption flag. It's a scheduling collision. Nothing on disk is broken yet — and if you fix it fast, nothing will be.

Fix it step by step

1. Confirm who's holding the transaction

Open an elevated Command Prompt or PowerShell. You want to see every TxF-aware handle on the box. Sysinternals handle.exe is the fastest way.

handle.exe -a -u | findstr /i "transaction"

You'll get a list of PIDs and handle types. Anything showing Transaction or TmTx is a suspect. Note the PIDs.

2. Kill the duplicate or stale process

If two instances of the same app show up, kill the younger one — the older one already owns the name and it'll finish cleanly.

taskkill /PID 4312 /F

If you can identify the process by name:

taskkill /IM setup.exe /F

Don't kill something you don't recognize. Take the PID, run tasklist /svc /FI "PID eq 4312", and see which service owns it.

3. Clear the KTM log for that resource manager

Sometimes the process is gone but the transaction is still in the log waiting on recovery. On the affected volume:

fsutil resource info C:\
fsutil resource setautoreset true C:\

The second command forces the log to reset on next mount. That's the sledgehammer, but it's the right one for a stuck resource manager that won't recover on its own. Reboot after.

4. Reboot and retry

KTM state doesn't always clear without a restart. Reboot, then run your original operation again — once, not twice. If it fails the same way, move to the alternatives below.

If that doesn't stick

Check your minifilters

Run this and look at the altitude column:

fltmc instances

Third-party filters below 320000 are often the culprit for transaction name collisions because they open the file inside someone else's transaction. Disable the suspect filter temporarily:

fltmc detach  C:\

If the error clears, update that filter's driver. Don't leave it detached — you'll lose the protection it provides.

Check the registry for a stale resource manager

KTM persists metadata under:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KtmRm

If the Start value is 3 (manual) on a machine that needs TxF, set it to 2. This is rare outside domain controllers running distributed transactions, but it bites people who tweaked services for "performance."

Isolate the app if it's COM+

Component Services → My Computer → COM+ Applications → find your app → right-click → Properties → Activation tab. Set it to run in its own server process instead of pooling with everything else in dllhost.exe. This removes cross-app transaction name sharing entirely.

Prevention

Don't let two copies of a TxF-style installer or backup job run at once. If your scheduler doesn't have a single-instance lock, add one. Also audit third-party kernel filters every patch cycle — TxF compatibility is not something vendors test well. And on servers, keep KtmRm set to automatic. The service weighs almost nothing and skipping it trades a tiny bit of RAM for a class of errors that eats an afternoon.

Related Errors in Database Errors
Cannot open database Fix 'Cannot open database' on SQL Server 2019 – 3 real fixes FATAL: remaining connection slots are reserved for non-replication superuser con Fix PostgreSQL 'FATAL: remaining connection slots are reserved' Error ERROR 1040 (HY000): Too many connections MySQL Error 1040: Too Many Connections — Real Fix Msg 3183 Restore validation fails on SQL Server 2019 with CHECKSUM

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.