Make simulated WFP flow-context removal atomic and idempotent
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- cpp
- Ambito
- networking
Direzione di ricerca
Start with fwp_engine_t::test_remove_flow_context and delete_flow_context, where the shared-lock lookup of fwpm_flow_contexts is released before the exclusive-lock erase. Make find-and-erase one exclusive-lock section, copy the callback inputs, then call flowDeleteFn after unlocking. Done means concurrent removers invoke it at most once, absent entries return a defined status, and a concurrency test covers FwpsFlowRemoveContext0 against simulated deletion.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
fwp_engine_t::test_remove_flow_context checks fwpm_flow_contexts under a shared lock, releases the lock, and then calls delete_flow_context, which reacquires an exclusive lock. Two concurrent removers can both observe the association. The winner erases it; the loser then finds no entry, asserts that the callout is non-null, and can invoke flowDeleteFn through a null pointer.
This occurs when simulated external flow deletion races with FwpsFlowRemoveContext during callout cleanup.
Originating review: https://github.com/microsoft/ebpf-for-windows/pull/5623#discussion_r4458625427
Desired behavior
Finding and claiming a flow-context association must be one atomic operation. Exactly one remover should own the association and invoke flowDeleteFn; later removers should receive a safe already-removed/not-found result.
The callback must still run after releasing the engine lock.
Acceptance criteria
- Find-and-erase of
fwpm_flow_contextsoccurs under one exclusive lock. - The winning remover copies all callback inputs before releasing the lock.
flowDeleteFnis invoked outside the engine lock and at most once per association.- Missing or already-removed associations return a defined status/no-op without assertions or null dereferences.
FwpsFlowRemoveContext0reports an appropriate status for an absent association.- A concurrency test runs cleanup removal and simulated flow deletion against the same flow.
- Lingua principale
- C++
- Stelle
- 112
- Fork
- 36
- Merge medio
- 8g 10h
- PR unite (30g)
- 6
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/usersim
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Dependency DashboardApertatriaged
Difficoltà 3/5 Mezza giornata Idoneità per principianti 15/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Duplicate cxplat codeAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di microsoft/usersim
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Niko1221/Strata#5560 · 2 commenti ·
I maintainer di solito rispondono entro 4 giorni
-
NVIDIA windows
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
要トリアージ 辞書
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
yksr-melt/Meltype#1625 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
[yugabyted] xcluster set_up and add_to_replication fail for database names containing - . or (Apertakind/bug priority/medium qa_automation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
yugabyte/yugabyte-db#37324 ·
I maintainer di solito rispondono entro 1 giorno