Skip to content

v1.3.5 - Proper Mutex-Based Deduplication

Choose a tag to compare

@edemarest edemarest released this 26 Oct 05:06
· 7 commits to main since this release

Fix: Proper Mutex-Based Process Locking

Problem: The previous mutex-based check using Mutex.OpenExisting() could return false positives. In some scenarios, the mutex would be held but the check would fail, causing the app to try to start a new monitor even though one was running.

Solution: Changed to use Mutex.WaitOne(100ms) instead:

  • If we CAN acquire the mutex it's stale (no process holding it) allow new monitor
  • If we CAN'T acquire the mutex within 100ms another process is actively holding it monitor is running, deduplicate

This is a much more reliable way to detect actual process ownership of the mutex.

Changes:

  • Timeout-based mutex validation instead of just checking existence
  • Detailed logging in MonitorStateHelper for debugging
  • Double-checks with Process.GetProcessesByName for confidence
  • Works reliably across different executable copies
  • Properly detects and tolerates stale mutexes from crashed processes

Files:

  • \RobloxGuard.exe\ - Single-file, self-contained executable
  • \RobloxGuard.exe.sha256\ - SHA256 checksum

Installation

Download and run. Auto-installs on first launch.