Skip to content

explorer-details-better-file-sizes: Harden Everything IPC waits - #84

Open
insane66613 wants to merge 1 commit into
m417z:mainfrom
insane66613:fix/everything-ipc-hang
Open

explorer-details-better-file-sizes: Harden Everything IPC waits#84
insane66613 wants to merge 1 commit into
m417z:mainfrom
insane66613:fix/everything-ipc-hang

Conversation

@insane66613

Copy link
Copy Markdown
Contributor

Summary

  • Bound the three Everything3 overlapped named-pipe waits to 1000 ms instead of waiting indefinitely.
  • Cancel and drain pending overlapped I/O before returning on timeout/shutdown, so the stack OVERLAPPED object cannot outlive the operation.
  • Signal the legacy Everything receiver ready event on every initialization failure path.
  • Close the ready-event handle when thread creation fails and clean up a failed receiver thread handle so a later query can retry.

Why

The current Everything3 send/receive paths can block indefinitely if an overlapped pipe operation never completes. The legacy receiver startup also waits indefinitely for a ready event, while Everything4Wh_Thread can return early from CreateEvent, RegisterClassEx, or CreateWindowEx without signaling it. Those failure paths can leave Explorer waiting forever.

The 1000 ms timeout matches the existing legacy Everything IPC timeout used by the mod.

Validation

  • Static regression check: 0 Everything3 WaitForMultipleObjects(..., INFINITE) sites.
  • Static receiver check: 0 initialization failure returns without a ready-event signal.
  • Windhawk 1.7.3 x64 compile: pass.
  • Windhawk 1.7.3 x86 compile: pass.
  • git diff --check: pass.
  • The six Wh_SetFunctionHookT deprecation warnings per architecture are pre-existing and unrelated.

Scope

This intentionally does not change the separate existing unbounded waits in Wh_ModUninit(). No deliberate hung-Everything runtime fault-injection test was performed; validation is source-level regression checking plus both-architecture compilation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant