Repository navigation
v1.3.5 - Proper Mutex-Based Deduplication
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.