Commit 2501d98
Bazzirovan
fix(rapier): don't panic on JNI calls referencing removed physics bodies
Replace expect()/index panics in the rapier JNI bridge with Option guards.
A Rust panic crossing the JNI boundary aborts the whole JVM, which on a
dedicated server manifests as instant shutdowns or ServerHangWatchdog
freezes whenever a rigid body, kinematic contraption or joint endpoint
was already removed (e.g. sublevel unload races) but is still referenced
by a pending JNI call.
- get_rigid_body(_mut): return Option instead of expect()
- getPose: fall back to identity pose instead of panicking
- removeSubLevel/removeBox/removeKinematicContraption: no-op if missing
- setMassProperties/teleport/wakeUp/velocities/forces: no-op if missing
- createKinematicContraption: drop mount reference if mount id is stale
- add*Constraint: return invalid handle (0) if an endpoint is missing
Verified on a live dedicated server (Windows): rope/sublevel crashes and
native step hangs are gone after rebuilding the natives with this patch.1 parent 550e644 commit 2501d98
4 files changed
Lines changed: 116 additions & 75 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
85 | 88 | | |
86 | 89 | | |
87 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
| 39 | + | |
| 40 | + | |
44 | 41 | | |
45 | 42 | | |
46 | 43 | | |
| |||
61 | 58 | | |
62 | 59 | | |
63 | 60 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | 61 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
74 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
75 | 71 | | |
76 | 72 | | |
77 | 73 | | |
| |||
140 | 136 | | |
141 | 137 | | |
142 | 138 | | |
143 | | - | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
144 | 142 | | |
145 | 143 | | |
146 | 144 | | |
| |||
218 | 216 | | |
219 | 217 | | |
220 | 218 | | |
221 | | - | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| |||
240 | 240 | | |
241 | 241 | | |
242 | 242 | | |
243 | | - | |
244 | | - | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
245 | 246 | | |
246 | 247 | | |
247 | 248 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
333 | 336 | | |
334 | 337 | | |
335 | 338 | | |
336 | 339 | | |
337 | 340 | | |
338 | | - | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
339 | 345 | | |
340 | 346 | | |
341 | 347 | | |
| |||
416 | 422 | | |
417 | 423 | | |
418 | 424 | | |
419 | | - | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
420 | 429 | | |
421 | 430 | | |
422 | 431 | | |
423 | 432 | | |
424 | 433 | | |
425 | | - | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
426 | 438 | | |
427 | 439 | | |
428 | 440 | | |
| |||
508 | 520 | | |
509 | 521 | | |
510 | 522 | | |
511 | | - | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
512 | 527 | | |
513 | 528 | | |
514 | 529 | | |
515 | 530 | | |
516 | 531 | | |
517 | | - | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
518 | 536 | | |
519 | 537 | | |
520 | 538 | | |
| |||
602 | 620 | | |
603 | 621 | | |
604 | 622 | | |
605 | | - | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
606 | 627 | | |
607 | 628 | | |
608 | 629 | | |
609 | 630 | | |
610 | 631 | | |
611 | | - | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
612 | 636 | | |
613 | 637 | | |
614 | 638 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
282 | 282 | | |
283 | 283 | | |
284 | 284 | | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
291 | 288 | | |
292 | 289 | | |
293 | 290 | | |
294 | 291 | | |
295 | 292 | | |
296 | 293 | | |
297 | 294 | | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
304 | 298 | | |
305 | 299 | | |
306 | 300 | | |
| |||
527 | 521 | | |
528 | 522 | | |
529 | 523 | | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
534 | | - | |
535 | | - | |
536 | | - | |
537 | | - | |
538 | | - | |
539 | | - | |
540 | | - | |
541 | | - | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
542 | 540 | | |
543 | 541 | | |
544 | 542 | | |
| |||
691 | 689 | | |
692 | 690 | | |
693 | 691 | | |
694 | | - | |
695 | | - | |
696 | | - | |
697 | | - | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
698 | 695 | | |
699 | 696 | | |
700 | 697 | | |
| |||
1112 | 1109 | | |
1113 | 1110 | | |
1114 | 1111 | | |
1115 | | - | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
1116 | 1119 | | |
1117 | 1120 | | |
1118 | 1121 | | |
| |||
1142 | 1145 | | |
1143 | 1146 | | |
1144 | 1147 | | |
1145 | | - | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
1146 | 1155 | | |
1147 | 1156 | | |
1148 | 1157 | | |
| |||
1164 | 1173 | | |
1165 | 1174 | | |
1166 | 1175 | | |
1167 | | - | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
1168 | 1183 | | |
1169 | 1184 | | |
1170 | 1185 | | |
| |||
1188 | 1203 | | |
1189 | 1204 | | |
1190 | 1205 | | |
1191 | | - | |
| 1206 | + | |
| 1207 | + | |
| 1208 | + | |
1192 | 1209 | | |
1193 | 1210 | | |
1194 | 1211 | | |
| |||
1288 | 1305 | | |
1289 | 1306 | | |
1290 | 1307 | | |
1291 | | - | |
1292 | | - | |
1293 | | - | |
1294 | | - | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
1295 | 1311 | | |
1296 | 1312 | | |
1297 | 1313 | | |
| |||
1333 | 1349 | | |
1334 | 1350 | | |
1335 | 1351 | | |
1336 | | - | |
1337 | | - | |
1338 | | - | |
1339 | | - | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
1340 | 1355 | | |
1341 | 1356 | | |
1342 | 1357 | | |
| |||
1370 | 1385 | | |
1371 | 1386 | | |
1372 | 1387 | | |
1373 | | - | |
1374 | | - | |
1375 | | - | |
1376 | | - | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
1377 | 1391 | | |
1378 | 1392 | | |
1379 | 1393 | | |
| |||
1402 | 1416 | | |
1403 | 1417 | | |
1404 | 1418 | | |
1405 | | - | |
1406 | | - | |
1407 | | - | |
1408 | | - | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
1409 | 1422 | | |
1410 | 1423 | | |
1411 | 1424 | | |
| |||
0 commit comments