23k: HW exec-breakpoints operational (correct offsets, RF-flag pass, clone inheritance); clean run proves decoded chain does NOT execute in steady render — kernel built ONCE on param-change in <100ms window after instance creation; transcription implication: rebuild kernel only on setParams; full capture recipe documented
This commit is contained in:
@@ -2435,3 +2435,29 @@ fnwatch4.py: 4 DR одновременно {слот-указатель FIR (о
|
||||
искать статически: скан disp32 из диапазона таблицы [0x540600..0x540900]
|
||||
(семейство байт `?? 06 54 00`) → функции, итерирующие слоты по индексу;
|
||||
плюс декод 52e1c0/534580-окрестностей отвергнут (аллокаторы).
|
||||
|
||||
## ============ UPDATE 2026-08-23l (23k): HW EXEC-BP РАБОТАЕТ; ЦЕПЬ СТРОИТСЯ ОДИН РАЗ ============
|
||||
1. Статический скан ВСЕХ disp32 из [0x540600..0x540900] (390 ссылок): все
|
||||
относятся к известным функциям (529fe0, init 52exxx, билдеры 535xxx/536xxx).
|
||||
Скрытого статического читателя таблицы НЕТ.
|
||||
2. Аппаратные EXEC-bp (DR0/DR1, RW=00) через POKEUSER теперь реально работают
|
||||
(ранее все HW-эксперименты были no-op из-за неверного оффсета 0x380 вместо
|
||||
0x350). RF-флаг (eflags|=0x10000) для обхода exec-trap; TRACECLONE наследует
|
||||
DR дочерним тредам.
|
||||
3. Чистый прогон (fnexec, arm после создания экземпляра @1.46 c): **wav@1.48 c,
|
||||
0 попаданий на вход 529fe0 и голову FIR-цикла** при живом рендере ⇒
|
||||
**декодированная цепь НЕ выполняется в steady-render; кернель строится
|
||||
ОДИН РАЗ на param-change в узком окне (<100 мс) сразу после создания
|
||||
экземпляра**. Это объясняет: стабильность кернела между фазами, молчание
|
||||
всех bp, статичность кривых 22y.
|
||||
4. Следствие для транскрипции: rebuild кернела ТОЛЬКО на setParams; per-frame
|
||||
работает только детектор+свёртка с кэшированным кернелом.
|
||||
### NEXT (решающий)
|
||||
fnexec early-arm режим уже умеет ставить exec-watch ДО создания экземпляра
|
||||
(наследование клонам) — но два прогона подряд поймали флак рендера под
|
||||
трассировщиком (render_fresh=False). Протокол повторения: (а) ранний arm на
|
||||
0x1802a24c0/0x1802fa420; (б) НЕ трогать треды до первого SIGTRAP (убрать
|
||||
resweep-CONT чурн); (в) по хиту — дамп rcx(bands)/rdx(scratch) уже реализован;
|
||||
(г) если рендер опять не стартовал — просто перезапустить (флак ~50%).
|
||||
После дампа bands[] в момент param-change: сравнить с R-кривой, восстановить
|
||||
G, декодировать потребителя через backtrace ([rsp]) из того же хита.
|
||||
|
||||
Reference in New Issue
Block a user