Commit 65ee614
committed
fix: unique JS error handle ids, and diagnose bad metadata node ids
Two review findings on this branch.
The JS error handle id was minted from a per-runtime counter, so every runtime
produced 1, 2, 3... A throwable converted back to JS on a runtime other than the
one that created it would then find an unrelated entry under the same id and
consume it, instead of missing and falling back to rebuilding the error from the
Java throwable. Ids are now unique process-wide, which is what makes the table
lookup itself the ownership check.
GetNodeById's new bounds check turned an out-of-range read into a nullptr its
callers still dereferenced. It now logs the offending id, ReadTypeName and the
array-element lookup in GetNodeType throw a NativeScriptException naming the
problem, and GetBaseClassNode returns null -- which every caller already treats
as "no base class". The assert it relied on was a no-op in release, where the
bounds check was missing entirely.
Also asserts the ownership precondition in StateMutex::Unlock and ReleaseAll: an
unmatched unlock would wrap depth_ and hold the mutex forever, and a non-owner
ReleaseAll would drop another thread's lock mid-section.1 parent 96e1ff2 commit 65ee614
2 files changed
Lines changed: 36 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| 44 | + | |
| 45 | + | |
43 | 46 | | |
44 | 47 | | |
45 | 48 | | |
| |||
50 | 53 | | |
51 | 54 | | |
52 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
53 | 59 | | |
54 | 60 | | |
55 | 61 | | |
| |||
144 | 150 | | |
145 | 151 | | |
146 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
147 | 156 | | |
148 | 157 | | |
149 | 158 | | |
| |||
152 | 161 | | |
153 | 162 | | |
154 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
155 | 170 | | |
156 | 171 | | |
157 | 172 | | |
| |||
245 | 260 | | |
246 | 261 | | |
247 | 262 | | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
248 | 266 | | |
249 | 267 | | |
250 | 268 | | |
| |||
425 | 443 | | |
426 | 444 | | |
427 | 445 | | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | | - | |
| 446 | + | |
| 447 | + | |
432 | 448 | | |
433 | 449 | | |
434 | 450 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
79 | | - | |
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
86 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
87 | 99 | | |
88 | 100 | | |
89 | 101 | | |
| |||
94 | 106 | | |
95 | 107 | | |
96 | 108 | | |
97 | | - | |
| 109 | + | |
98 | 110 | | |
99 | 111 | | |
100 | 112 | | |
| |||
0 commit comments