PINK: E2E trace analysis — Pass 11 async/sync seams/locks/threading (N1-N10)
Eleventh pass: Rust kernel with_handle_mut has zero synchronization — &mut KernelCore from raw pointer with no Mutex, concurrent FFI calls cause UB (N1 Critical), _run() has two completely different code paths depending on event loop state (N2 Critical), path B blocks event loop thread for every HTTP operation (N3 Critical), asyncio.run() called repeatedly creating destroying event loops per call (N4 Critical), _snapshot_ready Event cascading re-fetch — N callers produce N overlapping HTTP calls (N5 High). 243 total. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
This commit is contained in:
@@ -25,7 +25,8 @@
|
||||
| K | Pass 8 (Observability/Memory/Time/DeadCode) | 23 | 2 | 7 | 7 | 1 | 6 |
|
||||
| L | Pass 9 (Contracts/Events/Network/FFI/Diffs) | 16 | 0 | 4 | 8 | 4 | 0 |
|
||||
| M | Pass 10 (Runtime/TestBugs/FSM/Persistence/Metrics) | 18 | 3 | 7 | 5 | 3 | 0 |
|
||||
| **Total** | | **233** | **16** | **66** | **68** | **56** | **27** |
|
||||
| N | Pass 11 (Async/Sync Seams/Locks/Threading) | 10 | 4 | 1 | 3 | 1 | 1 |
|
||||
| **Total** | | **243** | **20** | **67** | **70** | **58** | **28** |
|
||||
|
||||
---
|
||||
|
||||
@@ -306,6 +307,25 @@
|
||||
|
||||
---
|
||||
|
||||
## N-Series: Async/Sync Seams, Lock Analysis, Threading (Pass 11)
|
||||
|
||||
*Full detail in TRACE doc under "PASS 11 — ASYNC/SYNC SEAMS, LOCK ANALYSIS, THREADING."*
|
||||
|
||||
| # | Flaw | Layer | Severity |
|
||||
|---|------|-------|----------|
|
||||
| N1 | Rust kernel `with_handle_mut` zero sync — `&mut` from raw ptr, UB on concurrent FFI | Rust | **Critical** |
|
||||
| N2 | `_run()` has two completely different code paths — runtime branch, not design | Venue | **Critical** |
|
||||
| N3 | `_run()` path B blocks event loop thread for every venue HTTP operation | Venue | **Critical** |
|
||||
| N4 | `asyncio.run()` called repeatedly — creates/destroys event loops per call | Venue | **Critical** |
|
||||
| N5 | `_snapshot_ready` cascading re-fetch — N callers produce N overlapping HTTP | Venue | **High** |
|
||||
| N6 | `BingxUserStream.close()` doesn't cancel pending tasks | Stream | Medium |
|
||||
| N7 | Live test architecture forces worst-case `_run()` path for every operation | Test | Medium |
|
||||
| N8 | `subscribe()` reconnect creates new tasks per iteration | Stream | Medium |
|
||||
| N9 | No `asyncio.all_tasks()` or task accounting — leaked tasks undetectable | All | Low |
|
||||
| N10 | `_snap_lock` no reader-side protection (informational) | Venue | Info |
|
||||
|
||||
---
|
||||
|
||||
## H-Series: Edge Domains — Dependencies, Error Handling, Types, Contracts (Pass 5)
|
||||
|
||||
*Full detail in TRACE doc under "PASS 5 — EDGE DOMAINS."*
|
||||
|
||||
Reference in New Issue
Block a user