sharpemu/src
Mike Saito 3d2c30b151
fix(core): lazy dlsym stub materialization, COW snapshots and deferred bootstrap logging (#94)
* fix(core): implement 4-tier lazy dlsym stub materialization and argument normalization

Enforce transactional and thread-safe resolution for standalone ELF bootstrapper pipelines. - Implement a 4-tier additive fallback cascade (T0: runtime symbols, T1: import entries scan, T2: Aerolib mapping, T3: runtime slack-pool lazy stub allocation at 0x7000_0000_0000). - Fix UnmanagedCallersOnly CLR runtime crashes on second bootstrap by adding NormalizeKernelDynlibDlsymArguments to detect and swap mirrored (symbol, handle) register inputs via rigorous pointer bounds verification. - Protect failure paths via CompleteKernelDynlibDlsymFailure, cleanly zero-filling target outputAddress buffers and returns Rax = -1 with zero managed logging execution in hot native paths.

* fix(core): harden lazy-stub diagnostics with COW snapshots and deferred bootstrap logging

Follow-up to lazy stub pool copy-on-write publishing in TryGetOrCreateLazyImportStub. - Snapshot _importEntries in ProbeReturnRip before near-call and PLT import lookup loops to prevent torn iteration during concurrent array replacement. - Defer SHARPEMU_LOG_BOOTSTRAP output: hot path records raw register slots in a ring buffer under lock; TryReadAsciiZ and Console.Error run only after import handler completion via DrainDeferredBootstrapTraces. - Normalize bootstrap dynlib register order at DispatchImport gateway entry before any logging or trace reads, so swapped RDI/RSI on Import#2 cannot fault the native gateway when bootstrap tracing is enabled. - Resolve lazy stub pool bounds from the full SelfLoader-mapped import region via VirtualQuery instead of a hardcoded 4 KiB cap. - Use ConcurrentDictionary for runtime symbol registration during concurrent dlsym. - Emit distinct [LOADER][WARN] reasons when import stub region resolution fails versus lazy stub pool exhaustion.
2026-07-13 12:25:37 +03:00
..
SharpEmu.CLI [logging] Migrate HLE diagnostics to SharpEmuLog (#80) 2026-07-13 12:11:27 +03:00
SharpEmu.Core fix(core): lazy dlsym stub materialization, COW snapshots and deferred bootstrap logging (#94) 2026-07-13 12:25:37 +03:00
SharpEmu.GUI [GUI] Add detachable console window (#91) 2026-07-13 00:16:21 +03:00
SharpEmu.HLE [logging] Migrate HLE diagnostics to SharpEmuLog (#80) 2026-07-13 12:11:27 +03:00
SharpEmu.Libs [logging] Migrate HLE diagnostics to SharpEmuLog (#80) 2026-07-13 12:11:27 +03:00
SharpEmu.Logging [GUI] Added Atrac9 audio decoder and improved GUI with audio preview and controller support (#64) 2026-07-11 19:14:08 +03:00