alandtse / alandtse/devbench

DevBench blocks main thread at kPostLoad, prevents other SKSE plugins from registering with OAR

Aperta
#86 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
10
Fork
4
Merge medio
1g 10h
PR unite (30g)
17

Descrizione

## Bug Description

When DevBench is enabled, **Open Animation Replacer (OAR)** fails to detect the **IEDConditionExtensions** plugin, resulting in 448+ "Missing required plugin" errors. Disabling DevBench resolves the issue entirely.

## Root Cause

DevBench reads config and starts its HTTP server at `kPostLoad`. On my setup, this blocks the main thread for **~53 seconds** (timestamp `19:20:20` → `19:21:13`). Since SKSE processes `kPostLoad` callbacks sequentially by handle order, and IEDConditionExtensions (handle 93) loads after DevBench (handle 32), the prolonged blocking prevents IEDConditionExtensions from calling OAR's plugin registration API before OAR initializes its condition factory.

## Timeline Evidence

```
19:20:20 [I] devbench 1.18.2 loaded
19:20:25 [I] devbench: config enabled=true port=8920
19:20:39 [I] devbench: keyboard input API ready ← 49s after config read
19:21:13 [I] devbench: registered SMF pages ← 53s total kPostLoad
19:21:13 [I] OAR: Condition and function factories initialized
19:21:13 [E] OAR: Missing required plugin IEDConditionExtensions version 1.0.0.0! ← 448 errors
19:21:20 [I] OAR: TrueDirectionalMovement registered API ← IED never registered
```

## SKSE Log Confirmation

All DLLs load correctly — no load failures:

```
handle 32: devbench.dll loaded correctly
handle 93: OpenAnimationReplacer-IEDConditionExtensions.dll loaded correctly
handle 94: OpenAnimationReplacer.dll loaded correctly
```

## Reproduction

1. Install DevBench v1.18.2 + OAR v3.2.0 + OpenAnimationReplacer-IEDConditionExtensions v1.0.2.0
2. Enable all in MO2
3. Launch Skyrim SE 1.5.97
4. OAR's "Problems" panel shows ~200+ IED-related errors
5. Disable DevBench → errors disappear

## Environment

- Skyrim SE 1.5.97
- SKSE 2.0.20
- DevBench 1.18.2
- OpenAnimationReplacer 3.2.0
- OpenAnimationReplacer-IEDConditionExtensions 1.0.2.0
- MO2 with 478 plugins (121 full + 357 light)
- Windows 10

## Suggestion

Consider deferring the HTTP server startup to `kDataLoaded` or later, or making server startup non-blocking so it doesn't hold the main thread during the critical `kPostLoad` window where other plugins need to register their APIs.

## Workaround

Set `"enabled": false` in `Data/SKSE/Plugins/devbench/config.json` — the DLL still loads (SKSE features work) but the HTTP server doesn't start, freeing the main thread for other plugins.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.